带有快递的socket.io

Posted

技术标签:

【中文标题】带有快递的socket.io【英文标题】:socket.io with express 【发布时间】:2011-05-05 01:27:12 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

只要我明白,

为什么不使用套接字消息类型作为事件而不是 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(...); ); );

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

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

git checkout master

【讨论】:

当我执行“git clone git://github.com/shripadk/express-juggernaut.git”时我得到这个错误:“致命:远程端意外挂断” 你的意思是执行这个命令“git clone git://github.com/shripadk/express-juggernaut-demo.git”,这对我有用,但是当我制作“git checkout master”时我得到“已经在'master'上”,我忽略了这个并运行演示,我得到了这个 “sys”模块现在称为“util”。它应该有一个类似的界面。 node.js:50 抛出 e; // process.nextTick 错误,或第一次滴答时的“错误”事件 ^ 错误:在 require (node .js:291:14) 在 Object. (/home/ibrahim/ws/Lebanon/staTest/express-juggernaut-demo/lib/support/juggernaut/lib/juggernaut/channel.js:2:13) 在Module._compile (node.js:348:23) at Object..js (node.js:356:12) at Module.load (node.js:279:25) 在 loadModule (node.js:251:12) at require (node.js:291:14) at Object. (/home/ibrahim/ws/Lebanon/staTest/express- juggernaut-demo/lib/support/juggernaut/lib/juggernaut/publish.js:4:15) 使用节点 v0.2.4!我猜你在节点 v0.3.0 上!您需要等到所有模块都与 v0.3.0 一起使用才能使用该版本。 :)【参考方案4】:

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

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

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

【讨论】:

Faye 内部不使用 socket.io。它基于bayeux协议。但是,这很好:)

以上是关于带有快递的socket.io的主要内容,如果未能解决你的问题,请参考以下文章

带有快递的socket.io

使用带有节点和快递的把手#each 时出错

如何使用带有羽毛/快递的 webpack-dev-middleware?

带有 socket.io 的快递服务器不会发送给正确的收件人

数据未发布在带有快递和翡翠的猫鼬上

使用带有快递的帖子:我想从用户那里接收数据,然后用新文件将该数据发送回用户