socket.io
上的事件绑定下方正常工作,
io = require('socket.io')()
io.on 'connection', (socket) ->
console.log socket.id
io.listen 3000
然后尝试将socket.io event
转换为Bacon EventStream
,
Bacon = require('baconjs').Bacon
io = require('socket.io')()
connections = Bacon.fromEventTarget io, 'connection'
connections.onValue (socket) ->
console.log socket.id
io.listen 3000
为什么它在下面失败?
TypeError: Object connection has no method 'on'
答案 0 :(得分:4)
在版本0.7.46中,有一个改进版的Bacon.fromEventTarget(或者只是Bacon.fromEvent btw),它应该为你找到合适的绑定/解绑对。
答案 1 :(得分:2)
fromEventTarget
盲目地尝试了几种不同的回调方法,包括bind
和on
。在socket.io:Server的情况下,两种方法都存在,fromEventTarget
使用了错误的方法。
我会改用fromCallback
:
connections = Bacon.fromCallback(io, 'on', 'connection')
这看起来有点不稳定所以我创建了一个Github issue。