【发布时间】:2022-01-18 12:53:49
【问题描述】:
我正在尝试使用现有的 express 服务器安装新的 websocket 服务器,如下所示:
const http = require('http');
const express = require('express');
const app = express();
const port = 3000;
const bodyparser = require('body-parser');
const server = http.createServer(app);
const WebSocket = require('ws');
const wss = new WebSocket.Server({server:server});
wss.on('connection', function connection(ws) {
console.log('A new client Connected!');
ws.send('Welcome New Client!');
ws.on('message', function incoming(message) {
console.log('received: %s', message);
wss.clients.forEach(function each(client) {
if (client !== ws && client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
});
//routing
const roomsRoute = require('./Implementierung/Ressourcen/rooms');
app.get('/', (req, res) => {
res.send('Hear them');
});
server.listen(port, () => {
console.log(`listening on port ${port}`);
});
首先,我遇到了这一行的问题:
const wss = new WebSocket.Server({server:server});
我无法以这种方式创建新的 WebSocket 服务器。
第二次:
if (client !== ws && client.readyState === WebSocket.OPEN) {
client.send(message);
}
WebSocket.OPEN 显示错误,可能是因为不存在的 WebSocket?
【问题讨论】:
-
OPEN常量在 WebSocket 客户端可用,在您的情况下为ws,因此请尝试ws.OPEN。你能解释一下I am not able to create a new WebSocket Server吗?你有什么错误吗?如果是,你能显示完整的错误堆栈吗? -
当输入 const wss = new WebSocket.Server({server:server}) 服务器是一个未解析的类型。
-
好的,所以这可能与您的代码无关,而是您的代码编辑器/linter/typescript 等。运行代码时您不会遇到任何错误,对吗?
-
不,服务器正在运行。我将 WebSocket.OPEN 更改为 ws.OPEN,现在可以使用了。但是终端上没有websocket服务器的消息
-
如果您在编辑器中看到 "unresolved type" 消息,您可以显示屏幕截图吗?