如何将 socket.io 模块化为多个页面
How to modularize socket.io to multiple pages
我正在尝试使用 socket.io 和表达。
是否可以在 express 应用程序中初始化 routes/index.js 中的套接字?
我尝试要求 app.js 并听取了它,但它没有用。
var app = require('../app.js');
var io = require('socket.io')(app);
如果上面不行的话,如何在app.js里面初始化io变量,然后在index.js里面使用呢?
我想了解的是如何模块化 socket.io
假设我有一个网站,其中两个页面使用套接字。我不想将它们的所有代码都放在 app.js.
中
您需要在 io 的侦听中传递 server 对象。试试这个。
var app = require('../app.js');
app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + server.address().port);
});
var io = require("socket.io").listen(server);
io.on("connection",function(socket){
console.log("Application connected");
socket.on('disconnect',function(){
console.log("Application Disconnected");
});
socket.on('some-event',function(meetup){
//do something
io.emit('some-new-event-to-notify-client',passSomeData);
});
});
我找到了解决办法。这不是我想要的,但它会做的。
Nodejs include socket.io in router page
如上所说link。
//app.js
var sockets = require('./sockets');
sockets.socketServer(app, server);
// sockets.js
var socketio = require('socket.io');
exports.socketServer = function (app, server) {
var io = socketio.listen(server);
io.sockets.on('connection', function (socket) {
...
});
};
目前所有发射现在都发送到 socket.js。但我本来想把它分成多个文件。
我正在尝试使用 socket.io 和表达。 是否可以在 express 应用程序中初始化 routes/index.js 中的套接字?
我尝试要求 app.js 并听取了它,但它没有用。
var app = require('../app.js');
var io = require('socket.io')(app);
如果上面不行的话,如何在app.js里面初始化io变量,然后在index.js里面使用呢?
我想了解的是如何模块化 socket.io
假设我有一个网站,其中两个页面使用套接字。我不想将它们的所有代码都放在 app.js.
中您需要在 io 的侦听中传递 server 对象。试试这个。
var app = require('../app.js');
app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + server.address().port);
});
var io = require("socket.io").listen(server);
io.on("connection",function(socket){
console.log("Application connected");
socket.on('disconnect',function(){
console.log("Application Disconnected");
});
socket.on('some-event',function(meetup){
//do something
io.emit('some-new-event-to-notify-client',passSomeData);
});
});
我找到了解决办法。这不是我想要的,但它会做的。
Nodejs include socket.io in router page
如上所说link。
//app.js
var sockets = require('./sockets');
sockets.socketServer(app, server);
// sockets.js
var socketio = require('socket.io');
exports.socketServer = function (app, server) {
var io = socketio.listen(server);
io.sockets.on('connection', function (socket) {
...
});
};
目前所有发射现在都发送到 socket.js。但我本来想把它分成多个文件。