【发布时间】:2014-06-10 17:12:41
【问题描述】:
我正在使用 mean.js,我需要在我的应用程序中添加一些实时功能,以实现这一点,我将使用 socket.io 库。 这是我关于如何在应用程序中集成并保持良好结构的想法。
意思是使用一个 server.js 文件,这是一个做很多配置的文件,所以我想做以下事情:
// Expose app
exports = module.exports = app;
// Add my reference to the socketServer
var io = require('/socketServer')(app);
文件“/socketServer.js”将是我的起点和我的套接字的配置点,看起来像这样:
var http = require('http');
var socketio = require('socket.io');
module.exports = function(express){
var server = http.Server(express);
var io = socketio(server);
io.path('/');
io.on('connect', function(socket){
socket.emit('connected', {msg: 'You are connected now.'});
socket.on('upvote', function(data){
socket.emit('upvoteR', 'newConnected');
socket.broadcast.emit('upvoteR', 'newCOnnected');
});
});
server.listen(8080);
return io;
};
我觉得将服务器默认配置与我的套接字配置分开,并使用它文件 (socketServer.js) 作为我的起点来开发注入我想要的依赖项的所有套接字逻辑可能对我有用。 我不知道是否有更好的方法来解决这个问题,或者我应该遵循的一些结构最佳实践或这样做的不便。
所以除了这个结构之外,还有其他疑问:
- 如何在同一个端口使用sockets和express server? 似乎,使用 express 4 我无法将 express 服务器与套接字链接,因为 express 4 服务器不再继承 node.js 的 httpServer,所以现在我必须做一个 server.listen(socketPort) 如果我使用与 mean.js 相同的 app.port,这只是一个 EADDRINUSE 错误。仍然可以让它在同一个端口工作吗?
- 如何使用快速会话来验证每个套接字连接?如果不可能,有什么更好的方法?一个示例或文档参考对我来说会很好。
提前致谢。
【问题讨论】:
-
socket.io 1.0 与 Express 4 配合得很好:socket.io/docs/#using-with-express-3/4
-
ops.. 是的,对不起,我没有意识到我忘记评论平均服务器( server.js )的 app.listen(config.port) 这就是为什么我收到 EDDRAUNISE 错误,对此感到抱歉.谢谢,我仍然想知道我是否可以使用快递会话并让安全快递。非常感谢..
-
没关系 :D 老实说,我对 socket.io+Express 共享会话没有任何经验,但我认为 this code snippet 会对你有所帮助。但它可能有点过时(与 socket.io 1.0 和 Express 4 不兼容)。
-
同意,似乎已经过时(3 年了吧?),但是是的,这可能对我有用,我要看看这段代码,也许我能找到学习我想要的最后一个版本的方法,非常感谢。
-
你看过
express.io吗?
标签: node.js socket.io mean-stack