Mic*_*ael 1 javascript node.js
我无法弄清楚为什么我不能写出来.我不知道我的事件监听器是否正确创建.我正在尝试学习Nodejs,我是javascript的新手.
var events = require('events');
var net = require('net');
var channel = new events.EventEmitter();
channel.on('join', function(socket){
this.on('broadcast',function(data){
socket.write(data);
});
});
var server = net.createServer(function(socket){
socket.on('connect',function(){
channel.emit('join',socket);
});
socket.on('data',function(data){
data = data.toString();
channel.emit('broadcast',data);
});
});
server.listen(8888);
Run Code Online (Sandbox Code Playgroud)
connect当您将连接建立为客户端时,仅在我的理解中发出套接字的事件; 但是你在这里做服务器.当调用内部回调时net.createServer,你已经连接到套接字,所以即使connect发出了事件,你也要订购它socket.on('connect', ...太晚了.
反过来,由于connect未调用回调函数,因此您永远不会join在事件通道上发出事件并且永远不会注册broadcast事件处理程序,并且socket.write永远不会调用该语句.正如所指出的,一些console.log陈述可以帮助您搞清楚,实际执行的代码是什么,并缩小了问题范围.
您可以通过socket.on('connect', ...在外部函数中删除并执行正确的操作来解决此问题,即,
var server = net.createServer(function(socket){
console.log("connect!");
channel.emit('join',socket);
socket.on('data',function(data){
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |