我有一个项目,正在使用socket.io和express,
现在我需要(已经尝试过)从express操作中广播一条消息。 我不知道如何获取发送或广播的引用,请问这是否可能?
app.get('/', function(req, res) {
//i need to send messages from here
});
其他一些使用express+socket.io的东西在我这里也起作用 :)
您可能想看看我的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
回调函数中。
<script> // 初始化socket.io...在服务器端:
// 然后 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(...); } }); });
请查看我的示例存储库,其中我使用ExpressJS + Juggernaut(通过socket.io进行发布/订阅):
http://github.com/shripadk/express-juggernaut-demo
这可能对你的需求来说有点过于复杂,因为它使用了发布/订阅模式。但是,在某种程度上,它解决了你使用常规 ExpressJS 路由的问题。克隆代码仓库后,请检查主分支:我找到了一个很好的例子,教我如何做我需要的事情,但是使用Faye,链接在这里http://nodecasts.org/。
我不知道Juggernaut、Faye和直接使用Socket.io之间的区别,但是对于我的情况来说,Faye很好。而且我认为它们两个都在内部使用Socket.io。