2010-04-18 19 views
12

Tôi đang phát triển một ứng dụng Cocoa có liên quan đến một yếu tố trò chuyện. Một cách tiếp cận mà tôi đã xem xét là sử dụng Websockets để xử lý giao tiếp client-server. Điều này đặc biệt mong muốn vì các cuộc trò chuyện cũng sẽ được hiển thị trên một trang web và việc sử dụng Websockets có thể làm cho việc triển khai rất đơn giản.Làm thế nào để kết hợp các WebSockets vào một ứng dụng Cocoa

Vì vậy: có thể sử dụng phần tử WebView và sử dụng Websockets trong đó không? (Tôi biết Safari chưa hỗ trợ Websockets, vì vậy tôi tưởng tượng điều này là không thể?)

Không có thư viện máy khách Websocket cho C, Objective C hoặc bất kỳ ngôn ngữ nào khác tôi có thể nhúng thành công trong ứng dụng của mình ?

Đề xuất được hoan nghênh.

Trả lời

3

Đây là một thực hiện WebSockets cho mục tiêu-c

http://github.com/esad/zimt

+1

Kể từ tháng 11 năm 2012, [zimt đã không được tác giả của nó phản đối] (https://github.com/esad/zimt/commit/39665286bf80dfcc38839870430b2a4350a8f39a) có lợi cho [SocketRocket] (https://github.com/square/SocketRocket). Vui lòng sử dụng thay vì zimt. –

+0

JeremyW.Sherman nói gì. Ngoài ra cờ "được chấp nhận" nên được loại bỏ khỏi lá cờ này và thêm vào lá cờ của mikelikespie. – anddam

-1

zimt dường như không làm việc trên iOS4 - không có thay đổi đã được thực hiện kể từ ngày 02 tháng 4 năm 2010 ..

0

libwebsocket được cung cấp bởi warmcat như một câu trả lời cho my question của thư viện WebSocket C++.

Nó hỗ trợ đề xuất chuẩn mới nhất -04 và -05 và cũng cung cấp mã hóa thông qua SSL. Ngoài ra, nó sẽ hoạt động trên các thiết bị iOS.

Bạn có thể sử dụng nó nếu bạn không nhớ sử dụng mã C hoặc bạn có thể viết trình bao bọc Objective-C cho thư viện.

0

Không thể lấy zimt hoặc UnitT để làm việc trong dự án của tôi, vì vậy tôi đã viết trình bao bọc nhanh này xung quanh uiwebview để sử dụng WebSockets gốc được hỗ trợ có trong iOS 4.2.

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

Hiệu suất đủ cho các thư nhỏ.

+0

Bạn đã gặp phải vấn đề gì khi sử dụng UnitT? Tôi rất vui được khắc phục mọi sự cố. –

+0

Josh, tôi đã xây dựng UnitT và nhập libUnittWebSocketClient.a vào dự án của tôi. Sau đó, để kiểm tra socket = [[WebSocket alloc] initWithURLString: @ "ws: // ip: 8080 /" delegate: self origin: nil protocol: nil tlsSettings: nil verifyAccept: NO]; [ổ cắm mở]; Tôi nhận được lỗi Open Error Domain = WebSocketErrorDomain Code = 0 "Thao tác không thể hoàn thành. Bắt tay sai" UserInfo = 0x16c480 {NSLocalizedFailureReason = Bắt tay sai} máy chủ websockets là Jetty 8. Đây là trên iOS 4.2. –

+0

Tôi nghĩ rằng tôi thấy vấn đề. Bạn muốn URL trỏ đến WebSocketServlet của bạn. Tôi đã kiểm tra trong dự án, testws, mà tôi đã sử dụng để chạy thử nghiệm đơn vị trong thư viện với Jetty 8.0.M2. Websocket của tôi chỉ vào url, ws: // : 8080/testws/ws/test.web.xml của tôi có đoạn như sau: ' TestWS com.unitt.testws.TestWebSocketServlet TestWS /ws/* '. Điều đó có khắc phục được sự cố không? –

18

Thư viện WebSocket mục tiêu duy nhất hỗ trợ tiêu chuẩn mới nhất, RFC 6455 (tại thời điểm viết bài đăng này) là SocketRocket (tuyên bố từ chối trách nhiệm: Tôi là tác giả của nó).

Cả triển khai ứng dụng khách của Unitt và Zimt đều sử dụng giao thức không dùng nữa và dường như không được duy trì.

+0

Còn về [CoreWebSocket] (https://github.com/mirek/CoreWebSocket)? Nó có tên tốt và có vẻ nhanh vì nó có API C. Tôi đã tạo ra một vấn đề [CoreWebSocket Vs. SocketRocket] (https://github.com/mirek/CoreWebSocket/issues/5) trước khi tôi thấy điều này. – ma11hew28

Các vấn đề liên quan