我正在使用 ws 库在 Node js 中编写一个基于套接字的服务器,我想测试我的代码是否有效。我在其他地方看到使用 telnet 来测试简单的聊天服务器,但是当我启动服务器并执行 telnet 127.0.0.1 5000 时,尽管输出显示“已连接到本地主机”,但我的服务器不会记录与新连接相关的任何内容。是我的服务器测试错误还是我的服务器根本无法工作?我的服务器代码如下:
var WebSocketServer = require('ws').Server
, http = require('http')
, express = require('express')
, app = express()
, port = process.env.PORT || 5000;
var server = http.createServer(app);
server.listen(port);
var wss = new WebSocketServer({server: server});
console.log('websocket server created');
wss.on('connection', function(ws) {
var id = setInterval(function() {
ws.send(JSON.stringify(new Date()), function() { });
}, 1000);
console.log('websocket connection open');
ws.on('close', function() {
console.log('websocket connection close');
clearInterval(id);
});
});
您已连接到 HTTP 服务器,但未建立 WebSocket 连接。这就是为什么你的脚本不打印任何东西。
我不确定你是否可以手动测试 websocket,请查看 handshake。
但是有一些类似 telnet 的程序可以使用 websocket。也许您正在使用的
wscat
模块中的 ws
会有所帮助。
我发现https://www.websocket.org/echo.html很有用。如果您正在测试本地主机服务器,只需在硬盘驱动器上创建一个 websocket.index 文件即可。代码在页面底部。
UPD:根据@jouell的注释,看起来这个工具现在已经过时了
这个小工具为我完成了这项工作:https://github.com/lafikl/telsocket
brew tap pascaliske/telsocket
brew update
brew install telsocket
telsocket -url ws://127.0.0.1:50000
(对于不使用 npm 的人)