Tag: socket.io

使用Socket.io发送和接收对象

这是我的app.js文件 io.on('connection', function(socket){ socket.on('ujwal', function (data) { socket.emit('news', function(){ console.log('testing'); }); }); socket.on('disconnect', function(){ console.log('user disconnected'); }); 在ujwal事件我发射另一个事件到客户端这里是我的index.html我也包括套接字库 var socket = io('http://localhost:3000'); $('#test').click(function(){ var as = "object"; socket.emit('ujwal',as); }); socket.on('news', function (a) { alert('receiving msgs'); }); 现在,我打开两个窗口,每当用户点击一个testing编号,他们得到,但谁不点击他们没有收到前端对象为什么? 为什么代码意味着什么时候你得到名称事件ujwal请消息A和B连接到服务器A点击testingujwal被解雇和检查服务器,并再次发回消息现在所有连接的用户应该看到警报? 这是我所知道的所以请使其工作,以便所有的用户可以得到警觉。

Node.js + Socket.io,build立的连接正在增加

我的node.js + socket.io服务器通过aws ec2实例进行部署。 并有一些networking调整configuration。 echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout echo 20000 > /proc/sys/net/core/netdev_max_backlog echo 2048 > /proc/sys/net/core/somaxconn echo 0 > /proc/sys/net/ipv4/tcp_tw_reuse 我用netstat命令监视连接状态。 netstat -anl | grep ":22000" | awk '/^tcp/ {t[$NF]++}END{for(state in t){print state, t[state]} }' 那么,发现“ESTABLISHED”的关系正在稳步增长。 TIME_WAIT […]

Socket.io和OpenShift上的节点

我已经读了端口8080服务器端的OpenShift监听。 我也读过,他们强制networking套接字连接到端口8000客户端。 我没有看到,我需要提及端口8000服务器端,因为显然OpenShifts apache reverseProxy应该路由8000到8080(这是由应用程序来决定它是什么types的连接?) 我读了很多,尝试了所有的东西,而且我真的无法弄清楚这一点。 在8080上监听并连接var socket = io();时,本地主机运行良好var socket = io(); 客户端。 在OpenShift上,请参阅以下内容: 客户端:8000,服务器:8080运行并build立WS连接,但没有来自服务器的响应。 没有.on('connection', … ) 。 有道理,不听8000。 客户端:8000,服务器:8080,服务器2:8000试图有2个独立的服务器,并且站点不会build立(等待端口8080可用时超时) 客户端:8000,服务器:8000站点不会build立(与上面相同) 客户端:只需连接使用io()服务器:8080站点按预期方式运行,但回落到xhr长轮询 有谁知道一个简单的教程或使用最新的Socket.io,OpenShift和Express 4的人的例子吗? 最糟糕的是,你看到的每个例子都是以不同的方式启动服务器(不赞成,比我所知道的更新)。 它似乎是如此简单(甚至广告)的疯狂。 仅供参考:最后一个端口组合,与简单的io();连接io(); 而在端口8080服务器端收听正在尽善尽美的工作。 在OpenShift上的websockets是否有气质?

Azure,SocketIO和NodeJS:如何知道服务器正在侦听哪个端口

我创build了一个nodejs应用程序,并部署在Azure上(如Web应用程序)。 在许多教程中,我已经看到,端口声明必须是: var port = process.env.PORT || 1337; 我怎样才能看到服务器正在侦听的端口? 如果我试图看到azure色的日志,我看到的端口是: server listen on port: \\.\pipe\908cedb1-d2e6-4501-a34d-fa9396ef7417 我想知道服务器正在侦听的端口,因为我想实现与独立客户端(连接到套接字io服务器的控制台套接字io客户端)套接字io。 客户端必须在服务器上连接哪个端口?

Node.js + Socket.io:连接断开时泄漏内存

背后故事的位: 我的Node应用程序,名为Sleepychat(在生产中,在Heroku上托pipe)最近开始报告内存限制达到的错误(在512MB)。 幸运的是,Heroku允许这个,直到达到5次才会崩溃应用程序,所以这很好。 不过,我觉得奇怪的是,这只是在最近推向Heroku之后才发生的,只不过是增加一个页面而已。 我的理论是,Heroku可能在更新上使用了更新版本的Node,但似乎并非如此。 我降级,错误仍然发生。 我的来源可以在GitHub上find 。 185行是连接代码,1553行是断开连接代码。 现在,我有一些时间来运行使用New Relic和Node Inspector的代码来分析它,并且似乎任何连接,无论是允许的,还是立即拒绝和断开连接,都会分配less量的内存断开。 例如,我导航到本地主机,页面连接到文档准备就绪,New Relic显示内存略有增加。 通常大约500kb(这对我来说仍然很大,但我猜这主要是套接字对象)。 当我断开连接时,New Relic没有发生变化。 更有趣的是,我可以垃圾网页刷新,以迅速激增内存使用量。 早些时候我提到连接是否被拒绝并不重要。 通过这个,我的意思是在15秒内互相连接3次后,网站会立即拒绝新的连接并断开连接。 尽pipe如此,页面刷新(自动连接)增加了RAM。 我已经看了很多次,看看我是不是发布了一些东西,但据我所知,一切都应该由范围来pipe理,所以我不知道是什么东西在泄漏。 不过,我注意到一些奇怪的行为,一旦我添加了New Relic。 首先,一旦Sleepychat达到了512MB的极限,Heroku会报告一个内存限制达到的错误,但是New Relic会显示好像一个大块(〜100MB)已经释放。 尽pipe如此,Heroku稍后还会报告更高的使用率。 其次,每当我使用节点检查器logging堆分配时,New Relic报告内存使用量的下降,但是一旦我停止logging就会立即恢复。 这是来自Node Inspector的一个快照文件(实际上是一个分配时间表)。 当我启动垃圾邮件页面刷新10秒。 另外,这里是New Relic报道的图片。 快照: 快照文件 新的遗物: 我不知道发生了什么事。 有人有主意吗?

Socket.io:服务器重新连接客户端的正确方法

我正在用socket.io构buildMEAN应用程序。 当页面刚刚加载时,由于应用程序的单页性质,套接字连接在用户导航到各种页面时build立并保持活动状态。 用户信息在我的套接字连接中可用,这要感谢passport.socketio 。 但是,当用户login或注销时,我希望连接重新初始化,否则套接字将包含有关用户的过时数据。 目前,我试图用这种方式来实现它:当用户login/注销时,服务器通过调用socket.disconnect();断开这个特定客户端的套接字socket.disconnect(); 。 在客户端,我监听disconnect事件,并尝试重新build立连接,如下所示: _socket.on('disconnect', function(reason) { _socket.connect(); }); 好了,现在,当用户注销或进入时,服务器断开客户端连接,此客户端连接回来,并且套接字中的用户信息是最新的。 到现在为止还挺好。 但是,考虑到连接中断的不同情况:服务器重新启动。 以前,它“只是工作”:当我停止我的服务器,连接中断,但是当我再次启动服务器,连接自动重新build立。 但是我添加了我的_socket.connect(); 调用,它不再工作:连接仍然是closures,直到我刷新浏览器中的页面。 我已经检查,当服务器调用disconnect(); , disconnect处理程序的reason是: io server disconnect 。 而当服务器停止时,原因是: transport close 。 那么,我已经实现了我的断开连接处理程序如下所示: _socket.on('disconnect', function(reason) { if (reason === 'transport close'){ // don't do anything special } else { _socket.connect(); } }); 现在起作用了。 但是,所有这一切似乎是绝对的肮脏的黑客。 至less,给出的reason ( io […]

初始化与http://127.0.0.1握手时出错

好的,我最近一直在使用SocketIO4Net.Client,并且遇到了一个问题。 我在启动时调用Hello类中的Go函数,一旦调用它,我得到一个错误“Error initialization handshake with http://127.0.0.1 ” 这里是我使用SocketIO包连接到的test.php文件 <script src="https://api.icbit.se/socket.io/socket.io.js"></script> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script> <script> $(document).ready(function () { var conn = io.connect('http://api-url'); conn.on('connect', function () { alert('Connected'); conn.emit('message', { op: 'subscribe', channel: 'orderbook_BUM3' }); }); conn.on('message', function (data) { console.log('Incoming message: ' + data.private); }); }); </script> 这里也是我使用的csharp代码 using SocketIOClient; using System; using System.Collections.Generic; using System.Linq; using […]

使用Socket.io检测(客户端)连接

我正在尝试使用Socket.io(通过NodeJS和AngularJS)来检测客户端何时因连接丢失而不一致。 我试过抓住socket.on disconnect connect_error reconnect_attempt reconnecting 但看起来他们并没有被解雇客户端。 我究竟做错了什么? 由于连接删除是一个客户端问题,我希望我应该能够在客户端上检测到它,但也许我错了。 有人可以帮我吗? 谢谢! 编辑:这是我正在使用的代码 socket.io.timeout(1000); console.log(socket); socket.on("open", function(){ console.log("Connected); }); socket.on("reconnect_attempt", function(){ console.log("Attempt"); }); socket.on("reconnecting", function(){ console.log("Reconnecting"); }); socket.on("disconnect", function(){ $log.error("Client disconnected"); }); 我正在伪装Chrome的设备模式。

SiegeTest:套接字错误无法连接

真的需要帮助弄清楚什么是错的。 应用程序背景:它是一个使用socket.io应用程序的nodejs 。 我正在testing我的网站加载使用siege windows 3.0.5工具。 10个并发用户70个 siege -c70 -t10s http://localhost:8082 并获取下面的错误信息。 [错误]套接字:无法连接sock.c:230:协议地址族不支持[错误]套接字:无法连接sock.c:230:没有这样的文件或目录[错误]套接字:无法连接sock.c :230:没有这样的文件或目录[错误]套接字:无法连接sock.c:230:没有这样的文件或目录[错误]套接字:无法连接sock.c:230:没有这样的文件或目录[错误]套接字:无法连接sock.c:230:没有这样的文件或目录[error] socket:无法连接sock.c:230:没有这样的文件或目录HTTP / 1.1 200 8.96 secs:3415 bytes ==> GET / HTTP / 1.1 200 8.96 secs:3415 bytes ==> GET / HTTP / 1.1 200 8.96 secs:3415 bytes ==> GET / HTTP / 1.1 200 8.96 secs:3415 bytes ==> GET / HTTP […]

Socket.io在特定的时间发送消息给所有活动的连接

是否可以在特定时间向所有活动连接广播消息? 假设在2015年9月9日17:00:00向所有活跃用户发送广播消息 我可以将date转换为UNIX时间戳,并使用settimeout函数来实现。 还有没有其他办法可以这样做。 setTimeout(function(){ io.emit('this', 'Broadcast message'); //broadcast message- will be sent to all active session },60000000); 有没有其他方法可以做到这一点?