gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:10:09 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com