Questions tagged «socket.io»

Socket.IO旨在使每个浏览器和移动设备中的实时应用成为可能,从而模糊了不同传输机制之间的差异。它支持多种传输,例如WebSockets,Flash套接字,长轮询等,在传输失败时会自动回退。

5
如果外部应用程序更改了持久模型(服务器数据库),AngularJS可以自动更新视图吗?
我刚刚开始熟悉AngularJS,但我想构建一个Web视图,该视图具有一个视图,当服务器端数据库中发生某些更改时,该视图将为用户实时自动更新(不刷新)。 AngularJS可以自动为我处理(大部分)吗?如果是这样,起作用的基本机制是什么? 例如,您是否以某种方式设置AngularJS来定期轮询数据库以查找“模型”更改?还是使用某种类似Comet的机制来通知AngularJS客户端代码模型已更改? 在我的应用程序中,挑战在于其他(非Web)服务器端软件有时会更新数据库。但是,这个问题同样适用于纯Web应用程序,在该Web应用程序中,您可能有多个客户端通过AngularJS Web客户端更改数据库,并且每个客户端都需要在其中一个更改数据库(模型)时进行更新。

8
Websocket传输可靠性(重新连接期间Socket.io数据丢失)
用过的 NodeJS,Socket.io 问题 假设有两个用户U1和U2通过Socket.io连接到应用程序。该算法如下: U1完全失去Internet连接(例如,关闭Internet) U2向U1发送消息。 U1尚未收到消息,因为Internet断开 服务器通过心跳超时检测到U1断开连接 U1重新连接到socket.io U1从不接收来自U2的消息-我猜它在步骤4中丢失了。 可能的解释 我想我明白为什么会这样: 第4步服务器杀死Socket实例和消息队列U1以及 此外,在步骤5 U1和服务器上创建新连接(不重用),因此,即使消息仍在排队中,仍然会丢失先前的连接。 需要帮忙 如何防止这种数据丢失?我必须使用心跳,因为我没有人永远挂在应用程序上。另外,我仍然必须提供重新连接的可能性,因为当我部署新版本的应用程序时,我希望停机时间为零。 PS我称之为“消息”的东西不仅是我可以存储在数据库中的文本消息,而且是有价值的系统消息,必须保证其传递或UI搞砸。 谢谢! 加法1 我已经有一个用户帐户系统。而且,我的应用程序已经很复杂。添加离线/在线状态将无济于事,因为我已经有了这种东西。问题不同。 签出第2步。从技术上讲,我们无法说出U1是否脱机,他只是失去了连接状态,说了2秒钟,这可能是因为互联网状况不佳。因此,U2向他发送了一条消息,但是U1没有收到该消息,因为互联网对他来说仍然不可用(步骤3)。需要步骤4来检测脱机用户,可以说超时为60秒。最终在另外10秒钟内,U1的互联网连接建立,他重新连接到socket.io。但是来自U2的消息在空间中丢失,因为服务器U1上的超时已将其断开连接。 那就是问题,我不会100%交货。 解 收集{}用户中的发射(发射名称和数据),由随机的emitID标识。发送发射 在客户端确认发射(将发射发送回带有emitID的服务器) 如果已确认-从{}中删除由emitID标识的对象 如果用户重新连接-为该用户检查{}并遍历该用户,则对{}中的每个对象执行步骤1 断开连接或/和/或连接时,如有必要,请向用户冲洗{} // Server const pendingEmits = {}; socket.on('reconnection', () => resendAllPendingLimits); socket.on('confirm', (emitID) => { delete(pendingEmits[emitID]); }); // Client socket.on('something', () => …

7
在套接字连接上发送其他数据
如何在套接字连接时最好地发送其他数据? 客户: socket.on('connect',function(){ //I'd like set some values and pass them up to the node server. }); Node.js服务器: io.on('connection', function(client){ //I'd like to get the data here. }); 例如发送用户名或电子邮件地址等。

4
使用Socket.io更新所有客户端?
是否可以强制所有客户端使用socket.io更新?我已经尝试了以下方法,但是当新客户端连接时,它似乎并没有更新其他客户端: 服务器端JavaScript: 我正在尝试向所有客户端发送一条消息,其中包含当前已连接的用户数,它可以正确发送用户数量...。但是,客户端本身似乎不会更新,直到刷新页面为止。我希望这是实时的。 var clients = 0; io.sockets.on('connection', function (socket) { ++clients; socket.emit('users_count', clients); socket.on('disconnect', function () { --clients; }); }); 客户端JavaScript: var socket = io.connect('http://localhost'); socket.on('connect', function(){ socket.on('users_count', function(data){ $('#client_count').text(data); console.log("Connection"); }); });

11
Socket.io + Node.js跨域请求被阻止
我正在使用node和socket.io编写聊天应用程序。在Chrome上运行正常,但mozilla给出了启用跨域请求的错误。 跨域请求被阻止:“同源策略”不允许读取位于http://waleedahmad.kd.io:3000/socket.io/?EIO=2&transport=polling&t=1401964309289-2&sid=1OyDavRDf4WErI-VAAAI的远程资源。可以通过将资源移至同一域或启用CORS来解决此问题。 这是我启动节点服务器的代码。 var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server), path = require('path'); server.listen(3000); app.get('/', function(req, res) { res.sendfile(__dirname + '/public/index.html'); }); 在客户端。 var socket = io.connect('//waleedahmad.kd.io:3000/'); HTML页面上的脚本标记。 <script type="text/javascript" src="//waleedahmad.kd.io:3000/socket.io/socket.io.js"></script> 我还在应用程序根目录中使用.htaccess文件。(waleedahmad.kd.io/node)。 Header add Access-Control-Allow-Origin "*" Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" Header add …

8
socket.io客户端库在哪里?
据我所知,对于socket.io如果node.js不用作Web服务器的客户端脚本,我们没有任何解释。我已经找到了客户端文件的完整目录,但是我需要它们的组合版本(例如在使用node.js网站服务器时提供的版本)。有任何想法吗?

4
在node.js中分离文件服务器和socket.io逻辑
我对node.js相当陌生,并且发现随着项目规模的扩大,将项目分为多个文件非常复杂。我之前有一个大文件,它同时用作文件服务器和用于多人HTML5游戏的Socket.IO服务器。理想情况下,我希望将文件服务器,socket.IO逻辑(从网络读取信息并将其写入带有时间戳的缓冲区,然后将其发送给所有其他播放器)和游戏逻辑分开。 使用socket.io中的第一个示例来演示我的问题,通常有两个文件。app.js是服务器,index.html并发送给客户端。 app.js: var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs = require('fs') app.listen(80); function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); …

3
该应用程序在有效负载/<Appname>.app/<App名称>中引用非公共选择器:解码器
通过管理器将应用程序提交到Apps商店时,我收到此警告。 该应用程序在Payload / .app /:解码器中引用了非公共选择器 我知道如果我们在应用程序中使用任何第三方API,就会收到此警告。我已将SOCKETIO-ObjC库用于应用程序中的聊天功能。还使用了Facebook iOS sdk进行fb实施。因此,我没有确切知道导致此警告的原因。请找到随附的ScreenShot以更好地了解

1
Pusher vs Pubnub vs开源Socket.io / SignalR.net / Faye / jWebSocket [关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 目前,我正在评估Pusher和PubNub,以在主要的Web客户端和服务器之间启用双向实时通信。两者看起来都令人印象深刻,Pusher的文档似乎更好,而PubNub的可扩展性和可靠性显然是他们的强项。 但是,在我管理预算时,我担心Pusher和PubNub的成本可能成为我们的问题,因此我正在考虑使用一种开源替代方案-我主要研究Socket.io,Faye和jWebSocket。 尽管我自己运行服务,但我有一些担忧: 有人真的曾经将Socket.io或其他开源解决方案扩展到多台服务器吗?PubNub声称每秒处理100万条消息!,我有点怀疑Socket.io是否可以在没有大量服务器的情况下做到这一点,如果它可以工作的话。 我应该使用开源解决方案吗?付费服务中是否有某些功能可能会让我错过呢? 如果我的服务器仍在AWS上,延迟真的会成为一个问题吗?PubNub位于多个位置,因此我希望这可以减少延迟,尽管如果需要将一条消息从美国发送到日本,那么在日本拥有一台服务器将无济于事,因为它仍然需要以一种或另一种方式到达那里。 感谢您的建议。

5
获取Socket.io客户端上的连接状态
我正在使用Socket.io,并且想知道从客户端到服务器的连接状态。 像这样: socket.status // return true if connected, false otherwise 如果连接断开或由于任何原因断开连接,我需要此信息来向用户提供视觉反馈。

3
RabbitMQ vs Socket.io?
我正在实时进行实时Web应用程序开发。 浏览器用户应该能够通过node.js服务器相互通信。其中一位用户编写了一条消息,其他所有用户都将收到该消息。 我不太了解RabbitMQ的工作方式。但是从快速阅读来看,它似乎可以处理消息的发布/订阅。 用户(在浏览器中)发布某些内容,而订户(在其他浏览器中)得到该消息。这不是Socket.io正在使用websockets吗? 这是我的问题: 它们每个都有什么优点/缺点? Socket.io可以代替RabbitMQ吗? 在Socket.io无法满足要求的Web应用程序中,是否需要使用RabbitMQ?

2
socket.io如何工作?[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我正在使用socket.io,并且安装迅速(这要归功于其用法页面上的示例),但我想了解有关幕后到底发生了什么以及使它起作用的技术的更多信息。 socket.io的确切机制是什么? 是在80端口还是另一个端口上? 它真的保持打开状态或被模拟吗? 有没有一种方法可以分析每个套接字事件?(有点像使用提琴手来查看ajax调用中发生的情况)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.