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 客户端的主要内容,如果未能解决你的问题,请参考以下文章