NodeJS,websocket和module.export

时间:2015-05-01 15:33:16

标签: javascript node.js websocket

我有一个server.js文件。

在里面,我定义了我的路线。

// routes
var mainRoutes   = require('./routes/main.js')(app, express);
var apiRoutes    = require('./routes/api.js')(app, express);
var socketRoutes = require('./routes/socket.js');

app.use('/', mainRoutes);
app.use('/api', apiRoutes);

// socket.io communication
io.sockets.on('connection', socketRoutes);

我的socket.js文件看起来像这样:

module.exports = function (socket) {

    console.log('user connected');

    socket.on('myEvent', function(data) {
        // whatever ...
    });
}

在这个功能中,我可以捕捉事件并发送一些。 但我需要在某个时候向每个人发送消息。当我收到'myEvent'事件时,请说。

所以基本上,我想这样做:

io.sockets.emit('messageForEveryone', "This is a test");

但是在这里,我只能使用'socket'参数,这个参数只适用于1个人。

我想将io从server.js传递给socket.js。

我尝试过(在server.js中):

var socketRoutes = require('./routes/socket.js', io);

那(在socket.js中):

module.exports = function (io, socket)

显然,它不起作用。我甚至不知道socket参数的来源。

问题:当我在sockets.js文件的module.export中时,我如何处理io对象?

我真的很感激任何帮助,我是所有这一切的新手。

谢谢!

1 个答案:

答案 0 :(得分:1)

由于您只想发送给所有客户,而不是将String dateStr = "29/04/2015"; SimpleDateFormat dtf = new SimpleDateFormat("dd/MM/yyyy"); Date dt = dtf.parse(dateStr); Calendar cal = Calendar.getInstance(); cal.setTime(dt); String m = cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG_FORMAT, new Locale("no", "NO")); System.out.println(m); 传递给io,您只需执行此操作即可。

socketRoutes