2015-08-04 19 views
27

Tôi đang phát triển chương trình phụ trợ nhắn tin WebSocket sử dụng Spring WebSockets, sử dụng giao thức SockJS + STOMP. Lý do tại sao không sử dụng WebSockets đơn giản là vì tôi sẽ cần sử dụng tích hợp bảo mật mà SockJS cung cấp trong Spring WebSockets và các tính năng gọn gàng khác từ SockJS, chẳng hạn như phòng, đăng ký, v.v. để các ứng dụng khách trên thiết bị di động (iOS và Android) và ứng dụng web có thể dễ dàng kết nối với máy chủ phụ trợ và thực hiện nhắn tin. Nếu có, thì tôi có thể sử dụng thư viện nào cho iOS và Android.Kết nối với khách hàng iOS và Android với SockJS Backend

Trên SockJS GitHub page họ cũng liệt kê các thư viện ứng dụng khách có sẵn, nhưng không có iOS và Android. Vì vậy, tôi tự hỏi liệu SockJS có đáng để sử dụng chỉ vì điều đó không.

Tôi thấy rằng đối với khách hàng iOS Primus-Objc (GitHub page) thư viện tuyên bố rằng họ có thể kết nối với native WebSockets, Socket.IO, SockJS or perhaps engine.io. là một tuyên bố đúng? Và sự kiện nếu đó là sự thật, về chất lượng của thư viện đó thì sao?

Và sự kiện nếu sử dụng SockJS ở mặt sau thì có thể hiển thị mã ví dụ cho iOS và Android để tôi có thể thực hiện bằng chứng khái niệm trên thiết bị di động không?

Nếu SockJS không phải là một lựa chọn tốt cho tôi, thì tốt hơn là xây dựng ứng dụng nhắn tin của tôi với Socket.io + Node.js (sử dụng JavaScript). Socket.io dường như với tôi có tất cả các thư viện máy khách cần thiết cho iOS (official library by Socket.IO guys) và Android (official library by Socket.IO guys).

Một tùy chọn khác có thể sử dụng thư viện Netty-Socket.io và xây dựng từng điểm cuối theo cách thủ công mà không cần bất kỳ sự trợ giúp nào từ Spring Framework (mà tôi đang sử dụng) nhưng có một thách thức nhỏ mà tôi phải giải quyết. Somebody actually already tried to do it (the same author asking question on the official Netty-Socket.IO Github page) nhưng có vẻ như anh ta không có may mắn trong việc giải quyết nó.

+0

tham khảo blog này http://www.elabs.se/blog/66-using-websockets-in-native-ios-and-android-apps –

+0

cũng có, hãy xem https://github.com/ elabs/mobile-websocket-example –

+1

tại sao không đơn giản sử dụng cometd? Nó cũng hỗ trợ cho Android ... –

Trả lời

4

Hãy tìm thấy bên dưới tài liệu tham khảo hữu ích liên quan đến yêu cầu của bạn cho cả iOS và Android

  1. http://www.elabs.se/blog/66-using-websockets-in-native-ios-and-android-apps
  2. https://www.cometchat.com/blog/ios-android-chat-mobile-sdk/
  3. https://github.com/elabs/mobile-websocket-example
+1

Có bất kỳ ví dụ nào về SockJS và iOS nói chuyện với nhau và người dùng được xác thực không? – Maksim

+0

Liên kết # 1 là một bài đăng blog liên quan đến mã nguồn trong Liên kết số 3. Họ chỉ làm ví dụ đơn giản "Hello World" ở đó. Trong Liên kết số 2, họ đang cung cấp để sử dụng một số SDK của bên thứ ba. Cần một cái gì đó cụ thể và chính thức liên quan đến SockJS, thiết bị di động, và giao thức Stomp. – Maksim

0

SockJS có thể rất thú vị vì nó cung cấp vận chuyển phi ws . Chỉ cần sử dụng WebSockets có thể không thực hiện được trong mọi tình huống.

Có một cross-platform SockJs khách hàng của OpenFL project:

https://github.com/jeremyfa/openfl-sockjs

Không kiểm tra tốt như thế nào nó hoạt động, nhưng ít nhất cho Android nó sử dụng JavaScript từ bên WebView, vì vậy nên không có gì khác hơn JavaScript. Một lần nữa, nó không phải là rõ ràng như thế nào chặt chẽ nó được kết hợp với OpenFL, nhưng cách tiếp cận của việc sử dụng WebView và khách hàng SockJS chứng khoán có thể có thể được tái sử dụng.

9

Có thể đã hơn một năm kể từ khi câu hỏi được hỏi. Nhưng, bởi vì nó nhận được trong các kết quả đầu tiên khi Googling cho SockJS + Android. Vì vậy, tôi đăng câu trả lời của tôi.

Từ kinh nghiệm của tôi với một dự án gần đây tôi đã làm việc, chúng tôi có thể sử dụng máy khách STOMP - like the one here - để kết nối với phần phụ trợ Spring Websocket từ ứng dụng Android gốc.

Và từ trình duyệt, bạn vẫn có thể sử dụng ứng dụng khách SockJS để đạt được khả năng tương thích giữa các trình duyệt với websockets với dự phòng.

Một lưu ý kể rằng khi sử dụng chỉ STOMP client để kết nối với WebSocket nguồn gốc URL sẽ là một cái gì đó giống như ws: // mydomain/SockJSEndpoint/WebSocket, và khi sử dụng SockJS khách hàng từ trình duyệt URL sẽ giống như http: // mydomain/SockJSEndpoint.

+1

Cảm ơn bạn đã chia sẻ điều này! –

0

Chúng tôi đã thử nghiệm chúng, cả Android-client (link) được đưa ra bởi @Amr K. Ismail và

này iOS-client (link) phù hợp với mùa xuân-SockJS-Server trong đó có STOMP.

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