扫一扫分享
Faye WebSocket是从 Faye 项目中提取出来的,它是一个多用途的 WebSocket,它可以很容易地在 Node.js 应用程序中命令预先存在的 WebSocket 连接。
Faye WebSocket 仅提供标准的 WebSocket api 和在 Node.js 中构建 WebSocket 客户端和服务器所需的类。它不提供服务器本身或提供任何其他抽象。
要安装Faye WebSocket,请运行 npm install faye-WebSocket。Faye项目的README部分提供了入门的必要文档。
npm install faye-websocket
您可以通过侦听 HTTP 升级请求并为请求创建新套接字来处理服务器端的 WebSocket。例如,这是您实现回显服务器的方式:
var WebSocket = require('faye-websocket'),
http = require('http');
var server = http.createServer();
server.on('upgrade', function(request, socket, body) {
if (WebSocket.isWebSocket(request)) {
var ws = new WebSocket(request, socket, body);
ws.on('message', function(event) {
ws.send(event.data);
});
ws.on('close', function(event) {
console.log('close', event.code, event.reason);
ws = null;
});
}
});
server.listen(8000);
WebSocket对象也是双工流,因此您可以将该 ws.on('message', ...)行替换为:
ws.pipe(ws);
请注意,在某些情况下(特别是通过 HTTP 代理连接的 Draft-76 客户端),WebSocket 握手在您调用后不会完成,new WebSocket()因为服务器尚未收到来自客户端的整个握手。在这种情况下,调用ws.send()将在内存中缓冲消息,直到握手完成,此时任何缓冲的消息都将发送到客户端。
如果需要检测 WebSocket 握手何时完成,可以使用 onopen事件。
如果连接的协议版本支持,可以调用ws.ping()发送ping消息,等待客户端响应。此方法接受一个消息字符串,以及一个在收到匹配的 pong 消息时触发的可选回调。true当且仅当发送了 ping 消息时,它才会返回。如果客户端不支持 ping/pong,则此方法不发送数据并返回 false.
ws.ping('Mic check, one, two', function() {
// fires when pong is received
});
手机预览