gpt4 book ai didi

node.js - Express Route 和 Socket io

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:34 34 4
gpt4 key购买 nike

好的,我的套接字 io 连接向前端发送信息,客户端也能够响应,从而保存返回的数据。

但是,当套接字 io 仅在 '/user/home' 路由中使用时,在 server.js 文件中启动套接字 io 是没有意义的。

所以我的问题是,如果在 server.js 中启动 http 服务器而不调用 http 服务器的新实例,如何在路由中使用套接字 io?

最佳答案

这就是我的配置方式:

我有一个处理套接字 io 内容的 io.js 库:

var io = require('socket.io')();
var redis = require("redis");
var client = redis.createClient();
io.path('/socket');
client.on('connect', function () {
console.log("Redis successfully connected");
});
io.on('connection', function (socket) {
console.log('a user connected: '+ socket.handshake.query.uid_bsp);
console.log('socket id: '+socket.id);
//clients.uid_bsp=socket.id;
//console.log('a user added: ');
client.set(socket.handshake.query.uid_bsp,socket.id);
});

io.notifyTransfer = function (uid_bsp,data){
client.get(uid_bsp,function(err,socketid){
console.log('notifying: '+socketid);
io.to(socketid).emit('update', data);
});
};



module.exports = io;

在 server.js 中,我需要这个库,并将其附加到服务器:

var httpserver = http.createServer(app);
var io = require('./src/utils/io.js');
...
var server = httpserver.listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});

io.attach(server);

因此,在我的路线(它们是单独的js文件,如rest、front等)中,我可以使用notifyTransfer方法,只需要io库。

希望这有帮助

关于node.js - Express Route 和 Socket io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26259699/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com