Socket.io 在其他服务器文件中发出事件
Socket.io emitting events inside other server files
是否可以在其他一些 node.js 服务器文件中发出事件?
就像我有 app.js 运行 和另一个文件 运行 一样。
在我的另一个服务器文件中
var io = require('socket.io');
在文件中还有类似这样的内容(我想将此数据 - 价格发送给客户)。
io.emit('price', { price: price});
我得到的错误是 io.emit 不是函数。知道我做错了什么吗?
我改成了
var io = require('socket.io')();
它现在可以正常工作(没有出现错误)但仍未将其发送给客户端。
您需要有一个 io
对象挂接到您的网络服务器(以接收传入的 socket.io 连接),然后您需要共享(通过导出或调用函数并传递io
对象)一个 io
对象和任何其他想要使用它的文件。
您没有显示太多代码,但假设您在主 express 文件中初始化 socket.io:
app.js
var express = require('express');
var app = express();
var server = app.listen(8080);
var io = require('socket.io')(server);
// load msg module and give it the io variable
var msg = require('./msg.js')(io);
msg.js
// define module constructor that accepts the io variable
var io;
module.exports = function(importIO) {
io = importIO;
}
// elsewhere in the module
io.emit(...)
是否可以在其他一些 node.js 服务器文件中发出事件? 就像我有 app.js 运行 和另一个文件 运行 一样。
在我的另一个服务器文件中
var io = require('socket.io');
在文件中还有类似这样的内容(我想将此数据 - 价格发送给客户)。
io.emit('price', { price: price});
我得到的错误是 io.emit 不是函数。知道我做错了什么吗?
我改成了
var io = require('socket.io')();
它现在可以正常工作(没有出现错误)但仍未将其发送给客户端。
您需要有一个 io
对象挂接到您的网络服务器(以接收传入的 socket.io 连接),然后您需要共享(通过导出或调用函数并传递io
对象)一个 io
对象和任何其他想要使用它的文件。
您没有显示太多代码,但假设您在主 express 文件中初始化 socket.io:
app.js
var express = require('express');
var app = express();
var server = app.listen(8080);
var io = require('socket.io')(server);
// load msg module and give it the io variable
var msg = require('./msg.js')(io);
msg.js
// define module constructor that accepts the io variable
var io;
module.exports = function(importIO) {
io = importIO;
}
// elsewhere in the module
io.emit(...)