node.js - 如何与 Express 应用程序并行启动 WebSocket 服务器?

标签 node.js express ws

我有一个 Express 应用程序和一个 websocket 脚本。 我创建服务器并在 www.js 文件中启动 Express 应用程序。

我面临的问题是,我无法在 www.js 文件中实例化 websocket。

这里是 www.js

....
const server = http.createServer(app);
server.listen(port);
server.on("error", onError);
server.on("listening", onListening);
....

这是 websocket.js

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });

  ws.send('something');
});

我知道行 const wss = new Websocket.Server({ port: 8080 }); 创建了 websocket 实例...但我希望能够在 www.js 中创建此实例文件和 websocket 的所有逻辑都在一个单独的文件中。

最佳答案

将http服务器实例传递给websocket服务器,

const wss = new Websocket.Server({ server: server });
<小时/>

如果您想将其作为单个模块分离到文件中,

const WebSocket = require('ws');


const initWSServer = (server) => {
  const wss = new WebSocket.Server({ server: server});

  wss.on('connection', function connection(ws) {

    ws.on('message', function incoming(message) {
      console.log('received: %s', message);
    });

    ws.send('something');

  });
}

module.exports = {
  initWSServer
}

那么,

const server = http.createServer(app);
server.listen(port);
server.on("error", onError);
server.on("listening", onListening);

const ws_server = require('./websocket.js');
ws_server.initWSServer(server);

关于node.js - 如何与 Express 应用程序并行启动 WebSocket 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331093/

相关文章:

javascript - 用node.js创建自己的mvc结构,表达并使用restful api

javascript - 在javascript中的for循环中维护http请求的顺序

javascript - 我可以对目录中的任何文件使用什么快速路由?

javascript - 如何使用 express 从单独的文件为客户端创建 api?

node.js - 使用WebSockets(ws)连接到Rcon

python - 在 python 上使用 cloudflare 保护连接到 websocket

javascript - 使用 Expressjs 作为跨域 ajax 调用的代理

javascript - 如何在 Firebase 可调用云函数上引发自定义错误?

javascript - Express/passport - Passport.authenticate 不是一个函数