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

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

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

  1. import express from "express";
  2. import { WebSocketServer } from 'ws';
  3. const app = express();
  4. const port = 80;
  5. const wss = new WebSocketServer({ server:app });
  6. wss.on('connection', function connection(ws) {
  7. ws.on('message', function message(data) {
  8. console.log('received: %s', data);
  9. });
  10. });
  11. app.listen(port, function () {
  12. console.log("Server listening on port: " + port);
  13. });

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

  1. import { createServer } from 'http';
  2. import express from "express";
  3. import { WebSocketServer } from 'ws';
  4. const app = express();
  5. const port = 80;
  6. const server = createServer(app)
  7. const wss = new WebSocketServer({ server:server });
  8. wss.on('connection', function connection(ws) {
  9. ws.on('message', function message(data) {
  10. console.log('received: %s', data);
  11. });
  12. });
  13. server.listen(port, function () {
  14. console.log("Server listening on port: " + port);
  15. });


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

ghg1uchk

ghg1uchk1#

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

  1. const server = createServer(app);

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

相关问题