如何结合使用 Socket.io 和 Express.JS(使用 Express 应用程序生成器)

2023-12-02

我正在尝试将 Socket.io 与 Express.JS 结合使用(使用 Express 应用程序生成器)。
我发现了一些如何做到这一点的问题(在 Express 4 和 express-generator 的 /bin/www 中使用 socket.io).
我的问题是我无法使用路由文件夹内的套接字。 我可以在 app.js 和 bin/www.js 文件中使用它们。当我调用路由index.js时,它只是长时间加载网页而没有给出任何错误。

bin/www.js

...
/**
 * Create HTTP server.
 */

var server = http.createServer(app);

var io     = app.io
io.attach( server );
...

app.js

...
// Express
var app = express();

// Socket.io
var io = socket_io();
app.io = io;
var routes = require('./routes/index')(io);
...

路线/index.js

module.exports = function(io) {
    var app = require('express');
    var router = app.Router();

    io.on('connection', function(socket) {
        console.log('User connected');
    });

    return router;
}

下面是一个关于如何将 Socket.io 与 Express 结合使用的简单示例,我在 GitHub 上提供了该示例:

  • https://github.com/rsp/node-websocket-vs-socket.io

后端代码是这样的:

var path = require('path');
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', (req, res) => {
  console.error('express connection');
  res.sendFile(path.join(__dirname, 'si.html'));
});
io.on('connection', s => {
  console.error('socket.io connection');
  for (var t = 0; t < 3; t++)
    setTimeout(() => s.emit('message', 'message from server'), 1000*t);
});
http.listen(3002, () => console.error('listening on http://localhost:3002/'));
console.error('socket.io example');

See https://github.com/rsp/node-websocket-vs-socket.io/blob/master/si.js

正如您在这里所看到的,我正在使用以下命令创建 Express 应用程序:

var app = require('express')();

然后我使用该应用程序创建一个 http 服务器:

var http = require('http').Server(app);

最后,我使用该 http 服务器来创建 Socket.io 实例:

var io = require('socket.io')(http);

运行后:

http.listen(3002, () => console.error('listening on http://localhost:3002/'));

一切都协同工作。

您可以在 GitHub 上查看整个示例,其中包含有效的后端和前端代码。目前使用 Express 4.14.0 和 socket.io 1.4.8。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何结合使用 Socket.io 和 Express.JS(使用 Express 应用程序生成器) 的相关文章

随机推荐