Questions tagged «websocket»

WebSocket是建立在TCP套接字之上的API,并且是用于客户端和服务器之间的双向全双工通信的协议,而没有HTTP的开销。

4
最佳Ruby on Rails WebSocket工具[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我在Rails 3中开始了项目,我需要添加通知(例如Facebook)。最好的方法是将WebSocket用于iPad之类的支持设备,但是我找不到能在Rails中轻松实现它的任何好的工具。我找到了Pusherapp,但价格不菲,我也不认为将数据提供给第三方公司是明智的。所以需要做的事情: 开源的 某种渠道支持 Rails的助手(和Rails 3一起使用)

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

5
使用webSocket向特定的已连接用户发送消息?
我编写了用于向所有用户广播消息的代码: // websocket and http servers var webSocketServer = require('websocket').server; ... ... var clients = [ ]; var server = http.createServer(function(request, response) { // Not important for us. We're writing WebSocket server, not HTTP server }); server.listen(webSocketsServerPort, function() { ... }); var wsServer = new webSocketServer({ // WebSocket server is …


2
Websocket onerror-如何读取错误描述?
我已经开发基于浏览器的多人游戏已有一段时间了,并且我已经在各种环境(客户端办公室,公共wifi等)中测试了不同的端口可访问性。一切都进行得很好,除了一件事:我不知道是如何读取错误号。或接收到onerror事件时的描述。 客户端网络套接字是用javascript完成的。 例如: // Init of websocket websocket = new WebSocket(wsUri); websocket.onerror = OnSocketError; ...etc... // Handler for onerror: function OnSocketError(ev) { output("Socket error: " + ev.data); } “输出”只是一些写入div的实用程序函数。 我得到的是ev.data的“未定义”。总是。我一直在搜寻,但是似乎没有关于此事件具有什么参数以及如何正确读取它的规范。 任何帮助表示赞赏!

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', () => …

4
WebSocket:死后如何自动重新连接
var ws = new WebSocket('ws://localhost:8080'); ws.onopen = function () { ws.send(JSON.stringify({ .... some message the I must send when I connect .... })); }; ws.onmessage = function (e) { console.log('Got a message') console.log(e.data); }; ws.onclose = function(e) { console.log('socket closed try again'); } ws.onerror = function(err) { console.error(err) }; 当我第一次连接到套接字时,我必须先向服务器发送一条消息以对自己进行身份验证并订阅频道。 …


12
websocket自动关闭连接
我正在用Java构建具有基于码头的嵌入式websocket服务器的应用程序。客户端是google chrome中的默认websocket实现。只有在关闭连接一段时间后,服务器和客户端之间没有传输,一切都可以正常进行。我不确定是谁关闭了连接:码头服务器或Chrome浏览器。 我认为解决此问题的方法是每x秒发送一条消息,但是我愿意接受更好的解决方案。 所以...我的问题是: 这是websocket协议要求的吗?在这种情况下,chrome浏览器正在关闭我的连接? 这是与码头有关的更多东西,或多或少与websocket协议有关吗?在这种情况下,如何在码头上禁用它? 还有另一个问题吗? 谢谢 更新:即使我每秒发送1条消息,连接仍然关闭

7
WebSocket请求-响应子协议
WebSocket提供了类似于人类对话的双向通信。客户端可以将数据发送到服务器,而服务器可以随时将数据发送到客户端。但是请求-响应行为呢?客户端可以向服务器询问一些内容,然后等待响应。似乎Websocket没有提供任何将客户端数据(请求)链接到服务器数据(响应)的功能。 这可能是子协议的工作,我对此有一些想法(发送带有请求的ID,并在超时时间内等待具有相同ID的响应)。 为了不浪费时间,为了节省时间,我在互联网上寻找了一个现有的解决方案,但没有找到任何相关的内容(可能是关键词不好)。 那么,有没有人知道这种工作,还是我错过了什么?
76 websocket 

2
使用Websockets代替RESTful HTTP有什么陷阱?
我目前正在从事一个项目,该项目要求客户端请求一项繁重的工作并将其发送到服务器。然后,服务器对作业进行划分,并为客户端提供一个URL数组,以进行GET调用并流回数据。我是该项目的新手,目前正在使用Spring Websocket来提高效率。Websocket现在将直接联系客户端hooray,而不是客户端不断ping服务器以查看是否有准备好流回的结果。 让websockets从头到尾管理整个过程是否是一个坏主意?我正在将STOMP与Spring websockets一起使用,放弃REST还会有重大问题吗?

3
Node.Js + Socket.IO与SignalR与C#WebSocket服务器
我目前有一个用.Net编写的TCP服务器应用程序,用于接收消息并将其提交给客户端。我正在考虑构建Web应用程序,因此需要通信层。 我已经构建了一个Node.JS + Socket.IO应用程序,该应用程序连接到我的TCP服务器,然后将通信推送到Web应用程序,并且一切正常。 我刚刚读过SignalR作为将其保留在.Net堆栈中的替代方法。 但是我也发现我可以编写一个C#Websocket Server,一个基本的演示 这里 我以为这个基本服务器就是SignalR,但是显然其中有很多功能吗? 我要决定的是只将当前的TCP应用程序附加到Websocket服务器,还是关闭单独的SignalR或Node.js路由?出于兴趣,SignalR应用程序是作为Windows服务,控制台应用程序还是IIS服务运行的?


4
WebSockets ping / pong,为什么不进行TCP keepalive?
WebSockets可以选择向另一端发送ping,而另一端应该以Pong响应。 收到Ping帧后,端点必须发送Pong帧作为响应,除非它已经接收到Close帧。在实际可行的情况下,应使用Pong框架进行响应。 TCP以keepalive形式提供类似的内容: [Y]您向您的同伴发送一个没有数据的keepalive探测数据包,并且ACK标志已打开。由于TCP / IP规范(作为一种重复的ACK),您可以执行此操作,并且远程端点将没有参数,因为TCP是面向流的协议。另一方面,您将收到来自远程主机的答复(该主机根本不需要支持keepalive,仅支持TCP / IP),并且没有数据和ACK。 我认为TCP keepalive效率更高,因为它可以在内核中进行处理,而无需将数据传输到用户空间,解析websocket框架,制作响应框架并将其交还给内核进行传输。网络流量也更少。 此外,WebSockets被明确指定为始终在TCP上运行。它们与传输层无关,因此TCP keepalive始终可用: WebSocket协议是一个独立的基于TCP的协议。 那么,为什么要使用WebSocket ping / pong代替TCP keepalive?


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.