【发布时间】:2016-09-11 03:03:35
【问题描述】:
我目前正在使用socket.io 在客户端 JavaScript 文件和 Node.js 服务器文件之间发出和监听事件,但我希望能够在 Node 服务器之间发出和监听事件及其模块。我的想法是它看起来像这样:
节点服务器:
var module1 = require('./module1');
//Some code to launch and run the server
module1.emit('eventToModule');
module1.emit('moduleResponse', function(moduleVariable) {
//server action based on module response
}
模块文件:
var server = require('./server.js');
server.on('eventToModule', function() {
//module response to server request
}
server.emit('moduleResponse', moduleVariable);
这显然是一个简化版本,但我认为这个功能应该可用。我需要将模块文件设置为第二台服务器吗?如果是这样,那会是什么样子?
我还尝试使用var socket = io.connect('http://localhost:3000');(这是我用来允许客户端连接到节点服务器的代码)而不是server,并让module1 监听并发送到socket,但那没有'也不行。
第二次尝试(仍然无效):
server.js
//other requirements
var module1 = require('./module');
const EventEmitter = require('events');
var emitter = new EventEmitter();
io.on('connection', function(client) {
client.on('emitterTester', function() {
emitter.emit('toModule');
emitter.on('toServer', function() {
console.log("Emitter successful.");
});
});
});
module.exports = emitter;
模块.js
var server1 = require('./server');
const EventEmitter = require('events');
var emitter = new EventEmitter();
emitter.on('toModule', function() {
console.log("Emitter heard by module.");
emitter.emit('toServer');
});
module.exports = emitter;
另外,当我尝试使用 server1.on 时,我收到消息 server1.on is not a function。
【问题讨论】:
标签: javascript node.js sockets module