2010-04-18 134 views
12

我正在開發一個涉及聊天元素的Cocoa應用程序。我考慮的一種方法是使用Websockets來處理客戶端 - 服務器通信。這將是特別理想的,因爲聊天也會顯示在網站上,使用Websockets可以使實現變得非常簡單。如何將WebSocket集成到Cocoa應用程序中

所以:是否有可能使用WebView元素,並在其中使用Websockets? (我知道Safari還不支持Websockets,所以我想這是不可能的嗎?)

失敗的是,有沒有任何Websocket客戶端庫用於C,Objective C或任何其他語言,我可以成功地嵌入到我的應用程序中?

意見建議。

回答

3

這裏是對的WebSockets的Objective-C的實現

http://github.com/esad/zimt

+1

截至2012年11月,[zimt已被其作者棄用](https://github.com/esad/zimt/commit/39665286bf80dfcc38839870430b2a4350a8f39a)轉而支持[SocketRocket](https://github.com/square/SocketRocket)。請使用它來代替zimt。 – 2013-02-17 01:56:14

+0

JeremyW.Sherman說。此外,「接受」的旗幟應該從這個國旗中刪除,並加入到mikelikespie的旗幟中。 – anddam 2013-09-11 15:50:28

-1

zimt似乎並沒有對iOS4的工作 - 自2010年4月2日未進行任何更改..

0

libwebsocket由warmcat提供,作爲C++ Websocket庫的my question的答案。

它支持最新的-04和-05標準建議,並且還通過SSL提供加密。 此外,它應該在iOS設備上工作。

如果您不介意使用C代碼或者您可以爲庫編寫Objective-C包裝器,則可以使用它。

0

無法讓zimt或UnitT在我的項目中工作,所以我在uiwebview中編寫了這個快速包裝以使用iOS 4.2中支持的本機WebSockets。

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

性能足夠滿足小消息。

+0

你使用UnitT遇到了哪些問題?我很高興解決任何問題。 – 2011-05-13 15:19:51

+0

Josh,我建立了UnitT並將libUnittWebSocketClient.a導入到我的項目中。然後測試socket = [[WebSocket alloc] initWithURLString:@「ws:// ip:8080 /」委託:self origin:nil protocols:nil tlsSettings:nil verifyAccept:NO]; [socket open];我得到錯誤打開錯誤域= WebSocketErrorDomain代碼= 0「操作無法完成。錯誤的握手」UserInfo = 0x16c480 {NSLocalizedFailureReason = Bad handshake} websockets服務器是Jetty 8.這是在iOS 4.2。 – 2011-05-14 17:13:30

+0

我想我看到了問題。您希望URL指向您的WebSocketServlet。我檢查了testws這個項目,我曾經在庫中對Jetty 8.0.M2運行單元測試。我的websocket指向url,ws:// :8080/testws/ws/test。我的web.xml具有以下片段:' TestWS com.unitt.testws.TestWebSocketServlet TestWS /ws/* '。這是否解決了這個問題? – 2011-05-15 20:21:43

18

支持最新標準RFC 6455(寫這篇文章時)的唯一objective-c WebSocket庫是SocketRocket(免責聲明:我是它的作者)。

Unitt和Zimt的客戶端實現都使用了不推薦使用的協議,似乎沒有被維護。

+0

[CoreWebSocket](https://github.com/mirek/CoreWebSocket)呢?它有一個很好的名字,它看起來很快,因爲它有一個C API。我創建了一個問題[CoreWebSocket VS. SocketRocket](https://github.com/mirek/CoreWebSocket/issues/5)在我看到這個之前。 – ma11hew28 2013-10-18 02:59:24

相關問題