NodeJS && 浏览器交叉兼容的 websocket 客户端

Posted

技术标签:

【中文标题】NodeJS && 浏览器交叉兼容的 websocket 客户端【英文标题】:NodeJS && browser cross compatible websocket client 【发布时间】:2015-07-02 14:21:26 【问题描述】:

我的目标是使用特定协议在 javascript 中实现 websocket 客户端。

此客户端应独立于平台。它应该能够从 NodeJS 环境和浏览器运行。我知道一种选择是在 NodeJS 包上使用 browserify,而不是在浏览器中使用结果,但我想知道是否还有其他更优雅的解决方案?

在我认为最流行的 ws NodeJS 包的 github 存储库中,据说它返回的 API 略有不同的 global.WebSocket。 我还能将它用于独立于平台的客户端应用程序吗?

感谢您的回复。

【问题讨论】:

你有什么好的解决方案吗? 这个项目已经有几年的历史了,但我记得我使用 browserify 来捆绑应用程序,并且我必须编写一个小包装器来使用基于平台的不同 API。 你能分享你的部分代码吗?因为我又遇到了这个问题,而且看起来还没有简单好的解决方案(很奇怪)。 【参考方案1】:

根据您的具体要求,我发现 Socket.io 适用于 NodeJS(使用 socket.io-client 和浏览器。它比 WebSockets 做得更多,因此请确保并更多地研究它,因为它可能不适合您的具体情况目的。

我将它用于任务队列并且对它很满意。

【讨论】:

【参考方案2】:

看看 sockjs for SockJS-client 作为一个 JavaScript 客户端库和 用于服务器实现的 SockJS 节点。 http://sockjs.org

【讨论】:

【参考方案3】:

最后我为 NodeJS 使用了https://websockets.github.io/ws/ 包,它与浏览器 WebSocket 协议 API 兼容。

var WebSock = global.WebSocket || global.MozWebSocket || require('ws');

this.sock = new WebSock(url, this.subProtocol);
this.sock.onopen = (evt) => ;
this.sock.onmessage = (msg) => ;
this.sock.onerror = (err) => ;

【讨论】:

重要提示 - 它不完全兼容。

以上是关于NodeJS && 浏览器交叉兼容的 websocket 客户端的主要内容,如果未能解决你的问题,请参考以下文章

浏览器兼容模式下,上传文件问题

查找视口高度/宽度,交叉浏览器:

关于浏览器空格( )的兼容问题

JS加载&解析XML文件,浏览器兼容

如何在页面中嵌入 PDF 查看器?

检测浏览器文件兼容性