node.js - 是否有不需要使用浏览器的 Node.js 无浏览器 websocket 客户端?

标签 node.js websocket

Socket.IO等都需要在客户端使用浏览器......只是想知道,我们如何才能拥有node.js的无浏览器websocket客户端?

最佳答案

当前推荐

将 WebSocket-Node 与我的包装代码一起使用(见下文)。在撰写本文时,我知道没有其他公共(public)项目支持新的 hybi 规范,所以如果你想模拟当前的浏览器版本,你需要 WebSocket-Node。如果您想模拟较旧的浏览器,例如 iOS 4.2 上的移动 Safari,您还需要下面列出的其他库之一,但您必须自己管理“WebSocket”对象名称冲突。

node.js 的公共(public) WebSocket 客户端实现列表如下。

Socket.IO

socket.io 客户端测试 WebSocket 实现执行 hixie 草案 75/76,但在撰写本文时,不是 hybi 7+。

https://github.com/LearnBoost/socket.io/blob/master/support/node-websocket-client/lib/websocket.js

我在问他们是否打算更新到 hybi 7+: http://groups.google.com/group/socket_io/browse_thread/thread/d27320502109d0be

Node -Websocket-客户端

Peter Griess 的“node-websocket-client”做了 hixie 草案 75/76,但在撰写本文时,不是 hybi 7+。

https://github.com/pgriess/node-websocket-client/blob/master/lib/websocket.js

WebSocket Node

Brian McKelvey 的 WebSocket-Node 有一个 hybi 7-17(协议(protocol)版本 7-13)的客户端实现,但该实现不提供浏览器样式的 WebSocket 对象。

https://github.com/Worlize/WebSocket-Node

这是我用来模拟浏览器风格的 WebSocket 对象的包装代码:

/**
 * Wrapper for Worlize WebSocketNode to emulate the browser WebSocket object.
 */
var WebSocketClient = require('./WorlizeWebSocketNode/lib/websocket').client;

exports.WebSocket = function (uri) {
  var self = this;
  this.connection = null;
  this.socket = new WebSocketClient();
  this.socket.on('connect', function (connection) {
    self.connection = connection;

    connection.on('error', function (error) {
      self.onerror();
    });

    connection.on('close', function () {
      self.onclose();
    });

    connection.on('message', function (message) {
      if (message.type === 'utf8') {
        self.onmessage({data:message.utf8Data});
      }
    });

    self.onopen();
  });
  this.socket.connect(uri);
}

exports.WebSocket.prototype.send = function (data) {
  this.connection.sendUTF(data);
}

SockJS

仅供引用,Marek Majkowski 的 SockJS 确实包含 Node 客户端。 SockJS 的客户端库只是一个浏览器 dom 包装器。

https://github.com/sockjs/sockjs-client

关于node.js - 是否有不需要使用浏览器的 Node.js 无浏览器 websocket 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3842565/

相关文章:

javascript - 使用 mqtt.js 和 Mosca 的离线消息问题

html - WebSockets 和它的异步/同步部分

servlets - ServerEndpointConfig.Configurator 如何工作

javascript - Tomcat servlet 在本地计算机上运行,​​在服务器上中断

android - 在 OkHttp 中使用安全的 websockets (wss)

node.js - 我可以从快速请求处理程序或中间件发出获取请求吗?

mysql - NodeJs - 如何在我的模型之间共享 MySQL 池以避免 'ER_CON_COUNT_ERROR'

node.js - 使用 populate 查询两个模式

javascript - Phonegap 应用程序 - Pusher 和 PubNub 的替代品

javascript - NodeJs中的箭头函数