我需要使用“import { createServer } from 'http';“在node中使用websockets / ws库和express?

e4yzc0pl  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(87)

所以我有一个工作的express服务器,我想添加websockets功能,这是应该工作的代码

import express from "express";
import { WebSocketServer } from 'ws';
const app = express();
const port = 80;

const wss = new WebSocketServer({ server:app });
wss.on('connection', function connection(ws) {
  ws.on('message', function message(data) {
    console.log('received: %s', data);
  });
});
app.listen(port, function () {
  console.log("Server listening on port: " + port);
});

字符串
上面的没有工作,什么工作是这样的:

import { createServer } from 'http';
import express from "express";
import { WebSocketServer } from 'ws';
const app = express();
const port = 80;
const server = createServer(app)

const wss = new WebSocketServer({ server:server });
wss.on('connection', function connection(ws) {
  ws.on('message', function message(data) {
    console.log('received: %s', data);
  });
});
server.listen(port, function () {
  console.log("Server listening on port: " + port);
});


那么我的结论是正确的,我需要从'http'导入{ createServer }才能使代码工作吗?

ghg1uchk

ghg1uchk1#

简短回答- * 是。如果您使用Express,则必须使用。**
Express是构建在Node.js的HTTP服务器之上的Web服务器框架,它不直接公开服务器示例。因此,要在Express中使用WebSockets,您必须自己创建一个HTTP服务器。

const server = createServer(app);

字符串
如果没有上面的行,服务器将不会运行WS连接。

相关问题