无法将socket.io事件转换为Bacon EventStream

时间:2014-12-28 20:50:18

标签: javascript node.js coffeescript socket.io bacon.js

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'

2 个答案:

答案 0 :(得分:4)

在版本0.7.46中,有一个改进版的Bacon.fromEventTarget(或者只是Bacon.fromEvent btw),它应该为你找到合适的绑定/解绑对。

答案 1 :(得分:2)

fromEventTarget盲目地尝试了几种不同的回调方法,包括bindon。在socket.io:Server的情况下,两种方法都存在,fromEventTarget使用了错误的方法。

我会改用fromCallback

connections = Bacon.fromCallback(io, 'on', 'connection')

这看起来有点不稳定所以我创建了一个Github issue