2010-04-18 5 views
12

Ich entwickle eine Cocoa-Anwendung, die ein Chat-Element enthält. Ein Ansatz, den ich in Betracht gezogen habe, ist die Verwendung von Websockets für die Client-Server-Kommunikation. Dies wäre besonders wünschenswert, da Chats auch auf einer Website angezeigt werden und die Verwendung von WebSockets die Implementierung sehr einfach machen könnte.So integrieren Sie WebSockets in eine Cocoa-Anwendung

Also: wäre es möglich, ein WebView-Element zu verwenden und Websockets darin zu verwenden? (Ich weiß, Safari unterstützt WebSockets noch nicht, also stelle ich mir vor, dies ist nicht möglich?)

Failing, gibt es irgendwelche Websocket-Client-Bibliotheken für C, Objective C oder jede andere Sprache, die ich erfolgreich in meiner Anwendung einbetten konnte ?

Vorschläge willkommen. Hier

Antwort

3

ist eine Implementierung von WebSockets für Objective-C

http://github.com/esad/zimt

+1

Seit November 2012 wird [zimt vom Autor abgelehnt] (https://github.com/esad/zimt/commit/39665286bf80dfcc38839870430b2a4350a8f39a) zugunsten von [SocketRocket] (https://github.com/square/SocketRocket). Bitte benutze das anstelle von zimt. –

+0

Was JeremyW.Sherman sagte. Auch das "accepted" -Flag sollte von diesem Flag entfernt und zu mikelikespies hinzugefügt werden. – anddam

-1

zimt scheint nicht auf iOS4 zu arbeiten - keine Änderungen seit 2. April 2010 vorgenommen wurden ..

0

Es gibt libwebsocket bereitgestellt von Warmcat als Antwort auf my question einer C++ Websocket-Bibliothek.

Es unterstützt die neueste -04 und -05 Standard-Empfehlung und bietet auch Verschlüsselung über SSL. Zusätzlich sollte es auf iOS-Geräten funktionieren.

Sie können es verwenden, wenn es Ihnen nichts ausmacht, C-Code zu verwenden, oder Sie könnten einen Objective-C-Wrapper für die Bibliothek schreiben.

0

Konnte Zimt oder UnitT nicht in meinem Projekt arbeiten, also schrieb ich diesen schnellen Wrapper um uiwebview, um die nativen WebSockets zu verwenden, die in iOS 4.2 enthalten sind.

https://github.com/zootreeves/iOS-WebSockets/

Leistung ist für kleine Nachrichten ausreichend.

+0

Welche Probleme haben Sie bei der Verwendung von UnitT festgestellt? Ich bin glücklich, irgendwelche Probleme zu beheben. –

+0

Josh, ich habe UnitT erstellt und die libUnittWebSocketClient.a in mein Projekt importiert. Dann zu Socket testen = [[WebSocket-Alloc] InitWithURLString: @ "Ws: // IP: 8080 /" Delegate: Selbstherkunft: Null Protokolle: Nil TlsSettings: Nil VerifyAccept: NEIN]; [Steckdose offen]; Ich bekomme den Fehler Open Error Domain = WebSocketErrorDomain Code = 0 "Der Vorgang konnte nicht abgeschlossen werden. Schlechter Handshake" UserInfo = 0x16c480 {NSLocalizedFailureReason = Schlechter Handshake} Der Websockets-Server ist Jetty 8. Dies ist auf iOS 4.2. –

+0

Ich denke, ich sehe das Problem. Sie möchten, dass die URL auf Ihr WebSocketServlet verweist. Ich habe das Projekt testws überprüft, dass ich den Komponententest in der Bibliothek mit Jetty 8.0.M2 ausgeführt habe. Mein Websocket zeigte auf die URL, ws: // : 8080/testws/ws/test.Mein web.xml hat das folgende Fragment: ' TestWS com.unitt.testws.TestWebSocketServlet TestWS /ws/* '. Wird dadurch das Problem behoben? –

18

Die einzige websocket-Bibliothek mit objektiven c, die den neuesten Standard RFC 6455 (zum Zeitpunkt des Schreibens dieses Beitrags) unterstützt, ist SocketRocket (Disclaimer: Ich bin der Autor).

Die Client-Implementierungen von Unitt und Zimt verwenden veraltete Protokolle und scheinen nicht gepflegt zu werden.

+0

Was ist mit [CoreWebSocket] (https://github.com/mirek/CoreWebSocket)? Es hat einen guten Namen und scheint schnell, da es eine C-API hat. Ich habe ein Problem [CoreWebSocket Vs. SocketRocket] (https://github.com/mirek/CoreWebSocket/issues/5) bevor ich das sah. – ma11hew28

Verwandte Themen