带有移动客户端的 websocket

Posted

技术标签:

【中文标题】带有移动客户端的 websocket【英文标题】:websockets with mobile clients 【发布时间】:2011-09-13 15:51:42 【问题描述】:

是否必须让客户端成为 Web 服务器的浏览器?对于拥有一些非浏览器客户端并从网络服务器获取数据的移动客户端来说,这是一个很好的架构吗?

我正在考虑在移动客户端上实现一个基本浏览器。使用 Web 方法登录,其余的通信(每 10 秒监控一次信息)使用 Web 套接字完成。这行得通吗?

我可以在没有 JS 的情况下实现 web sockets 吗?

谢谢

【问题讨论】:

【参考方案1】:

您可以在浏览器之外实现 WebSocket,而无需涉及任何 javascript。你可以有一个 android 原生 Java 应用程序,它通过 WebSockets 与服务器通信。

WebSockets 是一种协议。为在浏览器中运行的 JavaScript 定义的 WebSockets API 有所不同。

您可以在 WebSockets 握手期间使用 HTTP 可用的任何方法(即基本身份验证、digest、cram-md5、基于客户端证书 (TLS) 等)验证 WebSockets 连接,因为 WebSockets 握手仍然像任何其他 HTTP 对话一样。只有握手完成之后,WS 才不同于 HTTP。

请注意,您可能想要的服务器端不是普通的旧 Web 服务器,而是 WebSockets 服务器/框架。

使用 WS 连接移动客户端是否是“一个好的架构”有点模糊。我想说:如果您决定让您的移动客户端与服务器通信,并且该服务器在您的控制之下,并且您想利用 WS 优势,例如近实时/双向,那么它可能做个好人。比自己编写低级协议要好。

【讨论】:

+1 WebSockets 肯定会成为双向服务器到客户端通信的标准,并且客户端肯定不必是 Web 浏览器/JavaScript。 Web 套接字在今天的移动世界中并不是很可靠。许多蜂窝运营商完全阻止了 websocket 连接。所以不要太依赖他们 @user1169629:是的——如果你不使用 TLS。当使用通过 TLS 运行的安全 WebSocket(“wss”)时,移动运营商无法代理或阻止(因为他们无法查看流量内部),它会正常工作。

以上是关于带有移动客户端的 websocket的主要内容,如果未能解决你的问题,请参考以下文章

带有 Node.js 后端的移动应用程序 - 为客户端开发选择啥框架?

Websockets:从NodeJS websocket服务器到带有WebSocketSharp的C#客户端的多个响应

Websocket 服务器和移动客户端

带有 Node.js/Socket.IO 服务器和客户端的 Phonegap 应用程序中的 Android 的 WebSockets

带有 scala 客户端的 ruby​​ faye 服务器

带有 Android 客户端的 Java 游戏服务器