Tag: socket.io

我如何处理集群的Socket.IO房间?

我有一个服务器与集群工作,并使用socke.IO工作我使用粘滞会话,但我有我的房间有问题(我不知道我做的方式是最好的select):集群正在实例化进程,每个进程都有特定数量的房间。 服务器 过程1 会议室1 室2 房间N 过程2 会议室1 室2 房间N 我做的连接一些用户到房间(只有一个进程)的方式是使用路由,在这里用户访问一个页面,当他试图与Socket.io连接时,我检查URL和插入的信息他在一个房间里。 我的问题是使用集群来实现这个服务器我不能在特定的房间中插入用户,因为有一些房间只存在于特定的进程中,粘滞的会话把他放在另一个进程中。 我怎样才能把用户放在另一个进程的房间? 此外,使用只能看到他在服务器上的过程的路线,我想显示页面中的每个房间。 我已经阅读了Redis-Adapter,但是在使用Socket.io + Cluster(Sticky-session + redis-adapter)+房间的github上找不到解决scheme。 按照我的代码分享我所做的: //Cluster.Master with simplified Code if (cluster.isMaster) { var workers = []; // Spawn workers. for (var i = 0; i < num_processes; i++) { spawn(i); } // Create the outside facing server listening on our […]

如何在Node.js中一次性离开套接字所连接的所有房间

我有一些代码在一个套接字被join多个房间。 在代码中的某个时刻,我想离开所有的房间,而不用断开sockets。 是否有可能做到这一点? 如果是,那我该怎么做? 提前致谢..

长期投票的严重缺点?

对于交互式Web应用程序,像Websockets这样的东西越来越受欢迎。 然而,由于客户端和代理世界并不总是完全兼容,所以通常会使用像“Socket.IO”这样的复杂框架,对于任何可能会禁用其他框架的情况隐藏几种不同的机制。 我只是想知道一个正确实现的长轮询的缺点是什么,因为今天的服务器比如node.js很容易实现,并依赖于很好的支持旧的http技术(尽pipe长时间的轮询行为本身可能会打破它)。 从高层次来看,长时间轮询(尽pipe有一些额外的开销,适用于中等stream量的应用程序)类似于WebSockets所做的真正的推送行为,因为服务器每当他喜欢(尽pipe有一些超时/心跳机制)实际发送它的答案。 所以我们有更多的开销,因为我猜测TCP / IP更多的确认,但没有像频繁轮询那样的持续stream量。 而使用事件驱动的服务器,我们将不会有线程开销来阻止连接。 那么是否还有其他困难的缺点,迫使像聊天这样的中等stream量应用使用WebSockets而不是长时间轮询?

Websocket,socket.io,nodejs和安全性

我正在研究实时分析应用程序,并使用websockets(通过socket.io库)和nodejs。 不会有通过websockets发送的“敏感”数据(比如名字,地址等)。 它只会用于跟踪访问量并跟踪访问者总数(以及访问量排名前十位的访问者数量)。 我应该知道哪些安全问题? 我是否打开自己: DoS攻击? XSS攻击? 还有哪些安全漏洞可以用来访问networking服务器/networking服务器的局域网? 还有什么我没有在这里提到的? 谢谢!

如何用Socket.io和Node.js开发一个大型的聊天应用程序

在过去的几个月中,我一直在使用Socket.io,开发一个相当复杂的聊天室,踢/禁止/版主/朋友等应用程序。 在开发过程中,我重写了这个应用程序好几次,而且还在为我的代码而战。 我非常喜欢JavaScript,但是我发现在应用程序不断增长的时候很难保持它。 我已经阅读了大量有关如何编写聊天应用程序的“教程”,但都涵盖了最基本的方面。 GitHub上的所有示例应用程序也是如此,甚至是我在网上find的大多数聊天应用程序(其中大多数只是简单的即时消息,没有任何用户pipe理)。 有些用例对我来说太荒谬了,比如踢一个房间的用户。 主持人点击一个踢button – >发送事件到服务器 服务器将用户名与套接字配对(或者只是广播给所有用户,并在客户端进行过滤) – >发送给他踢的事件 用户向服务器发出注销事件,并且还显示他被踢的消息(注销只是我执行的处罚) 用户将从聊天室的用户列表中删除 – >将当前用户列表发送给房间中的所有用户 这似乎不太复杂,但是当我添加所有在客户端发生的callback来pipe理UI(因为我使用AngularJS,我使用事件在控制器之间进行通信)以及服务器端的大量callback,因为一切都是非阻塞的,我觉得这个testing真的很难。 在客户端还有另外一个问题,我必须在多个地方监听套接字事件,所以我必须有一种单例全局套接字对象,并在多个地方挂接事件监听器。 我做错了什么,或者是这个callback地狱的工作与websockets没有办法的结果吗? 有没有什么方法可以使开发这样的应用程序更容易? 例如替代技术到Socket.io? 到目前为止,我只find了5个月前上次提交的NowJS和meteor ,这真的很酷,但是看看网站看起来并不稳定。

callback函数的例子

我很难理解如何在下面的代码块中使用callback()函数。 当function callback{}没有被定义时,我们如何在函数体中使用callback()作为函数? 在下面的callback函数中传递true / false作为参数的代表是什么? 我感谢任何澄清,提前致谢! socket.on('new user', function(data, callback){ if (nicknames.indexOf(data) != -1){ callback(false); }else{ callback(true); socket.nickname = data; nicknames.push(socket.nickname); updateUserList(); } });

是否有可能听到join和离开房间的事件?

我想做一些事情: var room = io.sockets.in('some super awesome room'); room.on('join', function () { /* stuff */ }); room.on('leave', function () { /* stuff */ }); 这似乎并不奏效。 可能吗? 为了说明所需的行为: io.sockets.on('connection', function (socket) { socket.join('some super awesome room'); // should fire the above 'join' event });

socket.io和node.js发送消息到特定的客户端

发送消息到所有的客户端运作良好,但我想发送消息到特定的用户名。 我的server.js文件看起来像。 当它运行http://localhost:8080 ,客户端代码将用户添加到对象用户名以及套接字对象中。 并立即将个别消息返回给每个连接的客户端。 //var io = require('socket.io').listen(8080); var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs = require('fs') var usernames={}; app.listen(8080); // on server started we can load our client.html page function handler ( req, res ) { fs.readFile( __dirname + '/client.html' , function ( err, data ) { if ( err […]

socket.io与私人房间聊天

我开始研究节点和socket.io。 我已经创build了一个简单的聊天应用程序,我很惊讶它是多么容易。 现在,我想进一步介绍一下在线用户列表,这些用户可以私下聊天。 什么是最好的方法来解决这个问题? 我读了0.7的新房间function。 那会是一条路吗? 每次有2个用户需要私下聊天时dynamic地创build一个新房间? 但是第二个用户将如何被通知创build的新房间,以便他可以连接到那里? 处理所有上述逻辑是否更好? 存储房间和用户服务器端,每次循环通过它们,并发送消息到适当的? 谢谢

ZeroMQ与Socket.io

我想要zeroMQ和socket.io之间的主要区别 性能(速度更快吗?) 应用。 (用于实时服务吗?) 浏览器支持。 (支持哪些浏览器?)