J'utilise MZFayeClient
(https://github.com/m1entus/MZFayeClient) en utilisant WebSocket
. Je dois mettre en œuvre une technique de sondage longue. Comment le faire? Où commencer? Il n'y a pas d'information (ou d'information suffisante) sur la façon de le faire ou s'il y a une bibliothèque Faye avec interrogation longue.Par où commencer, mettre en œuvre de longue durée dans Faye pour iOS
Répondre
Je suis pas un développeur IOS mais un de mes projets j'aidais mon équipe IOS à intégrer le serveur Faye.
Sur mon application nous avions déjà un faye-serveur fonctionnant sur un framework de rails pour l'envoi de notifications alors nous décidons d'envoyer une notification au périphérique IOS en utilisant le même faye-server.
équipe IOS il suffit de suivre les instructions de: https://github.com/pcrawfor/FayeObjC
self.client = [[MZFayeClient alloc] initWithURL:[NSURL URLWithString:@"ws://198.128.0.1:9292/faye"]];
ws://198.128.0.1:9292/faye // this URL is same which is used on web-app.
subscribeToChannel & autres méthodes sont les mêmes que nous utilisons sur l'application Web.
Configuration simple Faye pour l'application Rails.
How can I push to Faye Server from Rails Controller?
Il travaillera pour moi, je l'espère aussi pour vous ..
désolé pour mon mauvais anglais)
sudo rackup faye.ru -E production -s thin
pour démarrer le serveur Faye
Thin web server (v1.6.4 codename Gob Bluth) Maximum connections set to
1024 Listening on localhost:9292, CTRL+C to stop
Vérifiez si votre serveur fonctionne
curl http://localhost:9292/faye -d 'message={"channel":"/server", "data":"hello"}'
Réponse
[{"channel":"/server","successful":true}]
journal du serveur:
[Faye::RackAdapter] Received message via HTTP POST:
"{\"channel\":\"/server\", \"data\":\"hello\"}" [Faye::Server]
Processing messages: [{"channel":"/server","data":"hello"}] (local:
false) [Faye::Server] Passing through incoming extensions:
{"channel":"/server","data":"hello"} [Faye::Server] Handling message:
{"channel":"/server","data":"hello"} (local: false)
[Faye::Engine::Proxy] Publishing message
{"channel":"/server","data":"hello"} [Faye::Server] Processing reply:
{"channel":"/server","successful":true} [Faye::Server] Passing through
outgoing extensions: {"channel":"/server","successful":true}
[Faye::Server] Returning replies:
[{"channel":"/server","successful":true}] [Faye::RackAdapter] HTTP
response: "[{\"channel\":\"/server\",\"successful\":true}]"
2. Travailler avec le client: Télécharger MZFayeClient
cd FayeObjC-master/examples
pod install
open FayeObjC.xcworkspace
MZViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.client = [[MZFayeClient alloc] initWithURL:[NSURL URLWithString:@"http://localhost:9292/faye"]];
[self.client subscribeToChannel:@"/server" success:^{
NSLog(@"ok");
} failure:^(NSError *error) {
NSLog(@"Server %@",error);
} receivedMessage:^(NSDictionary *message) {
NSLog(@"Server %@",message);
}];
self.client.delegate = self;
}
3.Construire exemple: Touch connexion:
[Faye::RackAdapter] Received message via WebSocket[hybi-13]:
"{\"supportedConnectionTypes\":[\"long-polling\",\"callback-polling\",\"iframe\",\"websocket\"],\"channel\":\"\\/meta\\/handshake\",\"minimumVersion\":\"1.0beta\",\"version\":\"1.0\"}"
[Faye::Server] Processing messages:
[{"supportedConnectionTypes":["long-polling","callback-polling","iframe","websocket"],"channel":"/meta/handshake","minimumVersion":"1.0beta","version":"1.0"}]
(local: false) [Faye::Server] Passing through incoming extensions:
{"supportedConnectionTypes":["long-polling","callback-polling","iframe","websocket"],"channel":"/meta/handshake","minimumVersion":"1.0beta","version":"1.0"}
[Faye::Server] Handling message:
{"supportedConnectionTypes":["long-polling","callback-polling","iframe","websocket"],"channel":"/meta/handshake","minimumVersion":"1.0beta","version":"1.0"}
(local: false) [Faye::Engine::Proxy] Created new client
"f68nwz5foyf1brczhmutdhclhnbtth5" [Faye::Engine::Proxy] Ping
"f68nwz5foyf1brczhmutdhclhnbtth5", 45 [Faye::Server] Processing reply:
{"channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-polling","websocket","eventsource","in-process"],"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","advice":{"reconnect":"retry","interval":0,"timeout":45000}}
[Faye::Server] Passing through outgoing extensions:
{"channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-polling","websocket","eventsource","in-process"],"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","advice":{"reconnect":"retry","interval":0,"timeout":45000}}
[Faye::Server] Returning replies:
[{"channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-polling","websocket","eventsource","in-process"],"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","advice":{"reconnect":"retry","interval":0,"timeout":45000}}]
[Faye::RackAdapter] Received message via WebSocket[hybi-13]:
"{\"channel\":\"\\/meta\\/connect\",\"clientId\":\"f68nwz5foyf1brczhmutdhclhnbtth5\",\"connectionType\":\"websocket\"}"
[Faye::Server] Processing messages:
[{"channel":"/meta/connect","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","connectionType":"websocket"}]
(local: false) [Faye::Server] Passing through incoming extensions:
{"channel":"/meta/connect","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","connectionType":"websocket"}
[Faye::Server] Handling message:
{"channel":"/meta/connect","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","connectionType":"websocket"}
(local: false) [Faye::Engine::Proxy] Accepting connection from
"f68nwz5foyf1brczhmutdhclhnbtth5" [Faye::Engine::Proxy] Ping
"f68nwz5foyf1brczhmutdhclhnbtth5", 45 [Faye::RackAdapter] Received
message via WebSocket[hybi-13]:
"{\"channel\":\"\\/meta\\/subscribe\",\"clientId\":\"f68nwz5foyf1brczhmutdhclhnbtth5\",\"subscription\":\"\\/server\"}"
[Faye::Server] Processing messages:
[{"channel":"/meta/subscribe","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","subscription":"/server"}]
(local: false) [Faye::Server] Passing through incoming extensions:
{"channel":"/meta/subscribe","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","subscription":"/server"}
[Faye::Server] Handling message:
{"channel":"/meta/subscribe","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","subscription":"/server"}
(local: false) [Faye::Engine::Proxy] Subscribed client
"f68nwz5foyf1brczhmutdhclhnbtth5" to channel "/server" [Faye::Server]
Processing reply:
{"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/meta/subscribe","successful":true,"subscription":"/server"}
[Faye::Server] Passing through outgoing extensions:
{"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/meta/subscribe","successful":true,"subscription":"/server"}
[Faye::Server] Returning replies:
[{"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/meta/subscribe","successful":true,"subscription":"/server"}]
type "bonjour" puis envoyer
[Faye::RackAdapter] Received message via WebSocket[hybi-13]:
"{\"data\":{\"text\":\"hello\"},\"clientId\":\"f68nwz5foyf1brczhmutdhclhnbtth5\",\"channel\":\"\\/browser\",\"id\":\"MQ==\"}"
[Faye::Server] Processing messages:
[{"data":{"text":"hello"},"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/browser","id":"MQ=="}]
(local: false)
[Faye::Server] Passing through incoming extensions:
{"data":{"text":"hello"},"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/browser","id":"MQ=="}
[Faye::Server] Handling message:
{"data":{"text":"hello"},"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/browser","id":"MQ=="}
(local: false)
[Faye::Engine::Proxy] Publishing message
{"data":{"text":"hello"},"clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/browser","id":"MQ=="}
[Faye::Server] Processing reply:
{"id":"MQ==","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/browser","successful":true}
[Faye::Server] Passing through outgoing extensions:
{"id":"MQ==","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/browser","successful":true}
[Faye::Server] Returning replies:
[{"id":"MQ==","clientId":"f68nwz5foyf1brczhmutdhclhnbtth5","channel":"/browser","successful":true}]
Hope this aide.