15

我有一个项目,我正在使用带有 express 的 socket.io,

所以我需要(我试过)是广播一条消息,但来自一个明确的行动。这可能吗我不知道如何获得发送或广播的参考。

app.get('/', function(req, res) {
//i need to send messages from here 
});

像同时使用 express+socket.io 的其他事情正在与我一起工作:)

4

4 回答 4

4

只要我明白,

为什么不使用套接字消息类型作为事件而不是 http get 或 post?在客户端,您将通过 websocket 发送一条消息,假设是一个事件属性。

所以在你的情况下:

<脚本>
  // 初始化 socket.io ...

  // 接着
  socket.send({event: '主页加载', foo: 'bar'});
</脚本>

在服务器端:

var io = io.listen(服务器);

io.on('连接', function (client) {
  client.on('message', function (message) {
    if (message.event == '主页加载') {
      client.broadcast(...);
    }
  });
});
于 2010-11-21T18:39:35.547 回答
4

您可能想看看我的socket.io + Express prime。那里详细介绍了您想要的内容。

// 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回调中。

于 2011-11-01T12:46:47.417 回答
0

查看我使用 ExpressJS + Juggernaut 的示例存储库(通过 socket.io 发布订阅):

http://github.com/shripadk/express-juggernaut-demo

当它使用发布/订阅时,这对于您需要的东西来说可能是多余的。但它确实在一定程度上解决了您使用常规 ExpressJS 路由的问题。克隆存储库后签出主分支:

git checkout master

于 2010-11-05T12:30:18.620 回答
0

我找到了一个很好的例子,如何制作我需要的东西,但是 faye 在这里http://nodecasts.org/

我不知道剑圣,Faye和直接Socket.io之间的区别,但Faye很好

就我而言。而且我认为他们俩都在内部使用 Socket.io。

于 2010-11-05T19:50:48.613 回答