Javascript 套接字子类不发出事件
短版本:TCP套接字子类未保留事件侦听器 我有一个TCP自定义套接字(CoffeeScript): 界面相当简单。我发送数据,当我收到数据时,我希望它是JSON。我将这个套接字流式传输到一个Javascript 套接字子类不发出事件,javascript,node.js,sockets,events,coffeescript,Javascript,Node.js,Sockets,Events,Coffeescript,短版本:TCP套接字子类未保留事件侦听器 我有一个TCP自定义套接字(CoffeeScript): 界面相当简单。我发送数据,当我收到数据时,我希望它是JSON。我将这个套接字流式传输到一个json流,它为我处理json的反序列化。效果很好 问题是:出于某种原因,我的套接字没有保留它的事件侦听器 测试用例(套接字已初始化为s,并在块之前连接到): 测试输出: WTF [] before SOMETHING ADDED task function (task) { consol
json流
,它为我处理json的反序列化。效果很好
问题是:出于某种原因,我的套接字没有保留它的事件侦听器
测试用例(套接字已初始化为s
,并在块之前连接到):
测试输出:
WTF []
before
SOMETHING ADDED task function (task) {
console.log('GOT TASK', task);
task.name.should.equal(name);
return done();
}
SOMETHING ADDED data function (data) {
return console.log('DATA TEST', data);
}
SOMETHING ADDED error function (err) {
return console.log('ERROR', err);
}
after
TESTING function (task) {
console.log('GOT TASK', task);
task.name.should.equal(name);
return done();
}
WTF WE GOT DATA { execute:
{ __v: 0,
name: 'd699ecbf-eda8-4588-a96f-b58e8a1c9a2e',
time: '2015-03-06T02:25:40.577Z',
_id: '54f91010bf41ed23cfe19339',
created_at: '2015-03-06T02:25:20.579Z',
updated_at: '2015-03-06T02:25:20.579Z',
opts: { some: 'data' } } }
WTF IS THIS JSON { execute:
{ __v: 0,
name: 'd699ecbf-eda8-4588-a96f-b58e8a1c9a2e',
time: '2015-03-06T02:25:40.577Z',
_id: '54f91010bf41ed23cfe19339',
created_at: '2015-03-06T02:25:20.579Z',
updated_at: '2015-03-06T02:25:20.579Z',
opts: { some: 'data' } } }
wat []
errors []
errors [ [Function: ondata] ]
false
从日志中,添加了任务
的事件处理程序。经过一段时间后,从套接字接收数据(WTF我们得到数据),流将其解析为JSON,但当它调用@emit
时,没有侦听器接收到事件。事实上,在这一点上,查看task
的侦听器表明没有侦听器
我的听众去哪了
您可以在上查看所有这些代码。我决定将学术方法留给更感兴趣的人,而放弃自定义套接字方法。我改为在服务器和客户端上使用Socket.io
constructor: (@opts = {})->
@opts.port ?= DEFAULT_PORT
@opts.baseURL ?= "http://localhost:#{@opts.port}"
@socket = SocketIO("http://localhost:#{@opts.port}")
是结果代码。用户引用client.socket
,并侦听该套接字上的事件。效果很好
WTF []
before
SOMETHING ADDED task function (task) {
console.log('GOT TASK', task);
task.name.should.equal(name);
return done();
}
SOMETHING ADDED data function (data) {
return console.log('DATA TEST', data);
}
SOMETHING ADDED error function (err) {
return console.log('ERROR', err);
}
after
TESTING function (task) {
console.log('GOT TASK', task);
task.name.should.equal(name);
return done();
}
WTF WE GOT DATA { execute:
{ __v: 0,
name: 'd699ecbf-eda8-4588-a96f-b58e8a1c9a2e',
time: '2015-03-06T02:25:40.577Z',
_id: '54f91010bf41ed23cfe19339',
created_at: '2015-03-06T02:25:20.579Z',
updated_at: '2015-03-06T02:25:20.579Z',
opts: { some: 'data' } } }
WTF IS THIS JSON { execute:
{ __v: 0,
name: 'd699ecbf-eda8-4588-a96f-b58e8a1c9a2e',
time: '2015-03-06T02:25:40.577Z',
_id: '54f91010bf41ed23cfe19339',
created_at: '2015-03-06T02:25:20.579Z',
updated_at: '2015-03-06T02:25:20.579Z',
opts: { some: 'data' } } }
wat []
errors []
errors [ [Function: ondata] ]
false
constructor: (@opts = {})->
@opts.port ?= DEFAULT_PORT
@opts.baseURL ?= "http://localhost:#{@opts.port}"
@socket = SocketIO("http://localhost:#{@opts.port}")