提问人:ibmkhd 提问时间:11/4/2010 最后编辑:Leopdibmkhd 更新时间:6/23/2012 访问量:20995
socket.io 快递
socket.io with express
问:
我有一个项目,我正在将 socket.io 与 express 一起使用,
所以我需要的(我试过)是广播一条消息,但来自一个明确的动作。 这可能吗,我不知道如何获得要发送或广播的参考。
app.get('/', function(req, res) {
//i need to send messages from here
});
其他事情,比如同时使用 express+socket.io 正在与我一起工作:)
答:
看看我的示例存储库,我在其中使用 ExpressJS + Juggernaut(pubsub over socket.io):
http://github.com/shripadk/express-juggernaut-demo
对于您所需要的东西来说,这可能有点矫枉过正,因为它使用发布/订阅。但它确实在一定程度上解决了你使用常规 ExpressJS 路由的问题。克隆存储库后签出 master 分支:
git checkout master
评论
我找到了一个很好的例子,如何制作我需要的东西,但有了 faye,它就在这里 http://nodecasts.org/。
我不知道 Juggernaut 、Faye 和 direct Socket.io 之间的区别,但 Faye 很好
就我而言.我认为他们俩都在内部使用 Socket.io。
评论
只要我明白,
为什么不使用套接字消息类型作为事件而不是 http get 或 post?在客户端,您将通过 websocket 发送消息,假设有一个事件属性。
因此,就您而言:
<script> // Initialize socket.io ... // and then socket.send({event: 'homepage loaded', foo: 'bar'}); </script>
在服务器端:
var io = io.listen(server); io.on('connection', function (client) { client.on('message', function (message) { if (message.event == 'homepage loaded') { client.broadcast(...); } }); });
你可能想看看我的 socket.io + Express 入门。你想要什么,那里详细介绍。
// Send to all connected sockets
io.sockets.send('Hello, World!');
// Send to all sockets in a specified room
io.sockets.in('room').send('Hello, Room!');
其中 是调用 返回的值。您可以将该代码放置在应用程序中的任何位置,例如回调中。io
socketio.listen()
app.get
评论