Tag: websocket

使用Socket.io连接客户端到服务器

我是相对较新的node.js和它的插件,所以这可能是一个初学者的问题。 我试图在Web服务器上获得一个简单的HTML页面连接到不同的服务器与websocket.io运行node.js。 我的代码如下所示: 客户 <script src="socket.io/socket.io.js"></script> <script> // Create SocketIO instance, connect var socket = new io.Socket(); socket.connect('http://127.0.0.1:8080'); // Add a connect listener socket.on('connect',function() { console.log('Client has connected to the server!'); }); // Add a connect listener socket.on('message',function(data) { console.log('Received a message from the server!',data); }); // Add a disconnect listener socket.on('disconnect',function() { console.log('The client […]

使用socketio心跳的优点/缺点

Socket.io允许您使用检测信号“检查Socket.IO连接的健康状况”。 什么是心跳,为什么要或不应该使用它们?

websocket是否安全?

维基百科似乎推测websockets是安全的: 为了支持Web浏览器,在Firefox 6(名为MozWebSocket),[2] Google Chrome 14 [3]和Internet Explorer 10开发者预览版中实现了WebSocket协议的安全版本。 …虽然没有已知的漏洞,但它在Firefox 4和5中被禁用… 但是w3表示他们不安全: 遵循HTTP过程可能会在Web浏览器上下文中引入严重的安全问题。 例如,考虑在一个path上使用WebSocket服务器的主机,在另一个path上使用打开的HTTPredirect器。 突然之间,即使脚本检查到URL有正确的主机名,任何可以被赋予特定WebSocket URL的脚本都可能被欺骗,从而与Internet上的任何主机进行通信(并可能与其共享秘密)。 是http websockets (ws :)安全吗? 是https websockets (wss :)安全吗? 如果不是#2,是否有logging的预防措施?

在Apache服务器上使用WebSocket

围绕WebSockets的所有讨论,很难find一个关于如何在Google上使用Apache服务器的良好演练。 我们正在开发一个插件,在PHP(symfony2),它会不时运行一种聊天实例。 而且我们发现WebSockets比AJAX更有趣,标准和快捷。 问题是,我们集团没有太多的系统pipe理资源,我们很难收集关于以下事项的好消息: 我们可以在传统的Apache专用服务器上运行WebSocket实例吗?如果是的话,您有没有对我们有用的链接? 如果我们需要对服务器进行修改,那么在知道我们对系统pipe理员不太熟练的情况下,你会推荐什么样的工具,所以我们不能在这方面有很高的维护费用。 非常感谢你, ps:我们将链接到您的博客/网站,因为我们将在我们的应用程序的这部分devblog上发表技术/信息。 再次感谢你!

html5 websockets会被防火墙摧毁吗?

我对html5的websockets规范感到非常兴奋,但我有一个问题。 现在每个人都在使用一些networking,使用内置防火墙的路由器(有线/无线),Windows也有内置的防火墙。 考虑到这一点,当服务器尝试连接到启动websocket握手的浏览器时,它会对绝大多数用户失败吗? (大多数人不知道如何在他们的路由器上设置端口转发) 或者是我的想法不正确,它会通过罚款?

.NET 4.5 WebSockets vs SignalR

我已经看到了asp.net MVC聊天应用程序的signalR vs html5 websockets,但它并没有100%的回答我的问题,因为它基于HTML5 WebSockets,微软可能已经用.NETSocket对象在.NET 4.5中扩展了它。 我想知道WebSocketfunction是否确实和SignalR一样,并且在WebSocket不可用时回退到长轮询? 毫无疑问,微软会采用与SignalR相同的技术来实现这一技术? 编辑: 对于其他人想知道这个,我发现这个评论最有助于理解的情况,为什么我会使用SignalR: 那么,他们不是真的。 直到现在,IIS和ASP.NET没有在支持的WebSocket中构build任何内容,所以SignalR项目必须自己构build它。 现在,微软正在提供的pipe道SignalR可以轻松切换到使用微软的实施,除了或自己的,而不是。 SignalR是对实现细节的抽象,WebScockets类是实现细节

Xmpp与Websocket

我即将开发一个几乎实时聊天的网站。 我知道它可以使用xmpp或websocket协议来实现。 我也知道xmpp协议是在1999年开发的,我想现在应该是成熟的。另一方面,websocket协议已经在2011年开发出来了。 如果xmpp能够处理实时对话,那么websocket需要什么? 这两种协议的主要区别是什么? 而我应该什么时候select其中的一个呢?

什么具体的用例通过WebSockets和长期投票调用BOSH?

BOSH是… 传输协议通过有效地使用多个同步HTTP请求/响应对而不需要使用频繁的轮询或分块响应来模拟两个实体(诸如客户端和服务器)之间的长期双向TCP连接的语义。 这听起来像WebSockets和HTTP长轮询,除了它使用两个开放的HTTP连接而不是一个,并且不扩展HTTP协议。 这两种协议有什么区别,哪种用例更喜欢WebSocket而不是BOSH?

WebSocket服务器如何处理多个传入的连接请求?

据此: HTTP升级头请求服务器将应用层协议从HTTP切换到WebSocket协议 。 客户端握手build立了IE10和服务器之间的HTTP-on-TCP连接。 在服务器返回其101响应之后,应用层协议从HTTP切换到使用先前build立的TCP连接的WebSocket。 在这一点上, HTTP完全没有了 。 使用轻量级的WebSocket有线协议,消息现在可以随时由任一端点发送或接收。 所以,我的理解是,在第一个客户端与服务器握手后,服务器的80端口将被WebSocket协议垄断 。 HTTP不再在80端口上工作 。 那么第二个客户端怎么会和服务器交换握手呢? 毕竟WebSocket握手是HTTP格式的。 ADD 1 感谢所有迄今为止的答案。 他们真的很有帮助。 现在我明白,同一个服务器的80端口是由多个TCP连接共享的。 而且这种共享是完全可以的,因为Jan-Philip Gehrcke指出TCP连接是由一个5元组元素来标识的。 我想补充一些想法。 WebSocket和HTTP都只是应用程序级别的协议。 通常他们都依赖TCP协议作为传输。 为什么select80端口? WebSocketdevise有意select服务器端口80进行握手和后续通信 。 我认为devise人员希望使WebSocket通信看起来像 从传输层面(即服务器端口号仍为80)的普通HTTP通信。 但根据jfriend00的回答,这个伎俩并不总是欺骗networking基础设施。 协议如何从HTTP转换到WebSocket发生? 从RFC 6455 – WebSocket协议 基本上,它打算尽可能接近暴露原始的TCP到脚本在给定的Web约束下。 它的devise也使得它的服务器可以与HTTP服务器共享一个端口,因为它的握手是一个有效的HTTP升级请求。 人们可以从概念上使用其他协议来build立客户端 – 服务器消息传递,但是WebSockets的目的是提供一个相对简单的协议,它可以与HTTP共存并部署HTTP基础设施(如代理服务器),并且与安全的TCP在给定安全考虑的情况下与这样的基础设施一起使用,有针对性的添加以简化使用并简单简单的事情(例如添加消息语义)。 所以我觉得我错了下面的说法: 握手请求模仿 HTTP请求而不是后面的通信。 握手请求到达端口80上的服务器。 因为它是80端口,服务器将使用HTTP协议处理它。 这就是为什么WebSocket握手请求必须是HTTP格式。 如果是这样,我认为HTTP协议必须被修改/扩展来识别那些WebSocket特定的东西。 否则,它不会意识到它应该产生 WebSocket协议。 我认为应该这样理解: WebSocket通信从客户端到服务器的有效 HTTP请求开始。 所以服务器遵循HTTP协议来parsing握手请求,并确定协议变更请求。 它是切换协议的服务器。 […]

WebSockets ping / pong,为什么不是TCP keepalive?

WebSockets 可以select向另一端发送ping命令,另一端应该用乒乓键响应。 一旦收到一个Ping帧,端点必须发送一个Pong帧作为响应,除非它已经收到一个closures帧。 它应该尽快与庞框架响应。 TCP以Keepalive的forms提供了类似的东西 : [Y] ou向对方发送一个keepalive探测包,里面没有数据,ACK标志打开。 你可以这样做,因为TCP / IP规范,作为一种重复的ACK,而远程端点将没有参数,因为TCP是一个面向stream的协议。 另一方面,您将收到来自远程主机的回复(根本不需要支持keepalive,只是TCP / IP),没有数据和ACK。 我认为TCP keepalive效率更高,因为它可以在内核中处理,而不需要将数据传输到用户空间,parsingwebsocket框架,制作响应帧,然后将其传回内核进行传输。 这也less了networkingstream量。 此外, 明确指定 WebSocket始终通过TCP运行; 它们不是传输层不可知的,所以TCP keepalive始终可用: WebSocket协议是一个独立的基于TCP的协议。 那么为什么要使用WebSocket ping / pong而不是TCP keepalive呢?