2011-08-03 74 views
4

我正在运行一个nodejs/socket.io(v 0.7)服务器来将数据推送到Web客户端。这很有效。通过PHP和cURL访问NodeJS/Socket.io

要扩展应用程序,我需要通过php触发/影响socket.io。我知道一个解决方案,可以通过http与nodejs http服务器一起使用cURL。

一个可能的解决方案是在同一个app.js中运行socket.io服务器和nodejs http服务器。客户端使用socket.io进行连接和通信,并且唯一允许的连接到“独立”http服务器(当然,在socket.io以外的另一个端口上监听)分别从php服务器上的cURL的127.0.0.1开始。

因为两台服务器都在相同的范围内,http服务器可以在socket.io服务器上触发事件。

我的问题:这样做有什么意义吗?有没有一个更清洁的解决方案触发来自PHP的socket.io事件?

回答

1

我认为这是一种合理而直接的方式;似乎建议谨慎处理执行顺序,但这可能只是我对节点显示的不确定性。

+0

好了,谢谢你。我会这样做。 – helix

1

我在写一个解决方案,我觉得它看起来很像pusher API。它利用房间(渠道)的概念。从路线express我可以卷曲(通过PHP)发送消息到房间(频道)。

io.sockets.in('your room').json.send('your json'); 

我想在将来开源项目(希望在一周内),但希望你能得到照片。

+0

嗨阿尔弗雷德,不知道这是我在寻找什么。无论如何,如果你有很棒的开源项目,不要忘记在完成后发布链接! – helix

+1

你有没有发表过你的解决方案?我对此非常感兴趣。 – EsTeGe

+0

@EsTeGe我倒退了:$,但我想继续努力。 – Alfred

0

socket.io与版本比1.3.3更高(可能是年纪大),就可以触发事件EMIT如下

//send broadcast message to all connecting clients 
io.emit([message event],[your message body obj or str]); 

// send to specific user 
io.to([your room]).emit([message event], [your message body obj or str]);