2016-03-29 20 views

Antwort

5

Ich bin nicht ein IOS-Entwickler aber eines meiner Projekte half ich meinem IOS-Team für die Integration der Faye-Server.

Auf meiner Anwendung hatten wir einen Faye-Server, der bereits auf einem Rails-Framework lief, um eine Benachrichtigung zu senden, dann entschieden wir uns, eine Benachrichtigung an das IOS-Gerät zu schicken, indem wir den gleichen Faye-Server benutzten.

IOS-Team folgen Sie einfach den Anweisungen von: 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 & andere Methoden gleichen sind wie wir auf Web-App verwenden.

Einfache Faye Setup für Rails-Anwendung.

How can I push to Faye Server from Rails Controller?

Es wird für mich arbeiten wie ich hoffe, auch für Sie ..

sorry für mein schlechtes Englisch;)

2

1.Server up and running:

sudo rackup faye.ru -E production -s thin zum Starten des Faye-Servers

Thin web server (v1.6.4 codename Gob Bluth) Maximum connections set to 
1024 Listening on localhost:9292, CTRL+C to stop 

Überprüfen Sie, ob Server

curl http://localhost:9292/faye -d 'message={"channel":"/server", "data":"hello"}' 

Antwort

[{"channel":"/server","successful":true}] 

Server-Protokoll arbeitet:

[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. Die Arbeit mit Klienten: herunterladen 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.Baue Beispiel: Touch-on connect:

[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"}] 

Typ "Hallo", dann senden

[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 Hilfe.