通过 PHP 和 cURL 访问 NodeJS / Socket.io
Posted
技术标签:
【中文标题】通过 PHP 和 cURL 访问 NodeJS / Socket.io【英文标题】:Access NodeJS / Socket.io over PHP and cURL 【发布时间】:2011-10-19 11:54:03 【问题描述】:我正在运行一个 nodejs / socket.io (v 0.7) 服务器来将数据推送到 Web 客户端。效果很好。
为了扩展应用程序,我需要通过 php 触发/影响 socket.io。我知道一个通过 nodejs http 服务器通过 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】:我认为这是一种合理且直接的方法;似乎建议谨慎处理执行顺序,但这可能只是我对节点显示的不确定性。
【讨论】:
【参考方案2】:我正在编写一个我认为很像pusher API 的解决方案。它利用房间(通道)概念。通过express 的路由,我可以 curl(通过 PHP)向房间(频道)发送消息。
io.sockets.in('your room').json.send('your json');
我想在未来(希望在一周内)开源该项目,但希望你能明白。
【讨论】:
嗨,阿尔弗雷德,不知道这是否是我要找的。无论如何,如果你有很棒的开源项目,完成后不要忘记在此处发布链接! 您曾经发布过您的解决方案吗?我对此很感兴趣。 @EsTeGe 我退步了:$,但我想继续努力。 也许你可以为它创建一个 github repo 以便社区可以帮助你。 我在考虑这个:)。我很快就会尝试在 github 上发布一些东西。【参考方案3】: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]);
【讨论】:
以上是关于通过 PHP 和 cURL 访问 NodeJS / Socket.io的主要内容,如果未能解决你的问题,请参考以下文章