Questions tagged «websocket»

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

10
webSocketServer node.js如何区分客户端
我成功地将套接字与node.js一起使用,但是我不知道如何在代码中区分客户端。有关套接字的部分是这样的: var WebSocketServer = require('ws').Server, wss = new WebSocketServer({port: 8080}); wss.on('connection', function(ws) { ws.on('message', function(message) { console.log('received: %s', message); ws.send(message); }); ws.send('something'); }); 这段代码可以与我的客户端js正常运行。 但是我想向特定用户或服务器上打开套接字的所有用户发送消息。 就我而言,我以客户端的身份发送消息,但收到响应,但其他用户则什么也没有显示。 例如,我希望user1通过webSocket向服务器发送消息,并向其套接字打开的user2发送通知。

1
是否提供Web套接字的本机PHP支持?
寻找Web套接字实现的Hello World类型示例: 这是来自php.net的Socket Create参考,但这看起来比Web Sockets更底层。 我想使用caniuse.com上所示的Web套接字,该套接字现在已在所有新的主要浏览器中实现。 Google搜索打开了这个Nets.TutsPlus网站,在其中可以使用JavaScript示例代码...但是我需要知道如何在PHP中实现服务器端,而不是示例中的Java,Ruby或Node.js。 PHP套接字创建相关吗?PHP本身是否支持Web套接字?我想正确的方向实现PHP会有所帮助。 实际上,本教程的phpwebsockets链接已损坏...这是图书馆应该使用的库吗? Websockets.org有一个测试应用程序,但是没有提到PHP。

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位于多个位置,因此我希望这可以减少延迟,尽管如果需要将一条消息从美国发送到日本,那么在日本拥有一台服务器将无济于事,因为它仍然需要以一种或另一种方式到达那里。 感谢您的建议。

8
如何在端口80上运行Node.js?
我的目标是在端口80上运行Node.js。这是因为我发现node.js被某些网络阻止,这些网络不允许来自任何其他端口的流量。 看来最好的方法是通过Node.js代理Apache。我尝试使用node-http-proxy来做到这一点,但是我没有任何运气。 我正在使用的代码在这里: var util = require('util'), http = require('http'), httpProxy = require('http-proxy'); httpProxy.createServer(9000, 'localhost').listen(80); http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2)); res.end(); }).listen(9000); 但是我一直收到端口80的错误消息“使用中的地址”。我一定做错了。 如何使用node-http-proxy通过node.js代理Apache?这将使我能够在端口80上运行node.js吗?并且node-http-proxy是实现此目标的最佳方法吗? 谢谢。

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


2
在用户离开标签页或关闭屏幕后,如何检测浏览器何时阻止计时器和WebSocket断开连接?(javascript)
语境 运是一种进步的Web应用程序具有定时器(A比赛setTimeout,setInterval)和WebSocket连接来获得实时通信。 怎么了 只要用户停留在应用程序中,一切都很好。但是,当用户转到另一个选项卡或另一个应用程序或关闭屏幕(在移动设备的情况下)时,它变成了一个“可怕的未知世界”。 Websocket可能会或可能不会“暂停”或“关闭” 计时器看起来像在节流或防抖。 这种行为似乎取决于浏览器和平台,甚至可能取决于特定的用户行为。我想浏览器和操作系统都有自己的生命周期/机制来节省电池和/或计算。 当用户回来时,该应用程序处于未知状态,我正在努力正确恢复该状态。 关于websocket,我可以通过socket.io和reconnecting-websocket自动重新连接,但这还不足以解决所有问题。 寻找答案 关于这些浏览器的不同浏览器的“生命周期”是什么?有记录吗?他们什么时候决定关闭并节流? 他们对websockets到底做了什么?浏览器只是断开它们的连接? 他们到底对计时器做什么?他们会抑制它们或使其反跳吗? 一般而言,javascript执行会怎样?暂停/破坏/节流? 有什么办法可以关闭某些浏览器生命周期事件?我唯一能找到的可能是可见性API 有没有一种方法可以人为地重现此行为以能够测试解决方案?在台式机上尤其困难。Websocket无法关闭,Chrome开发人员似乎并不急于解决2014年以来的问题(!):使用连接限制时不包含 Websocket 不管以上哪种情况,是否都存在实用的跨浏览器解决方案来检测/解决此问题?(例如,根据经验,台式机上的Firefox的行为似乎与Chrome完全不同,iPhone断开连接的频率要比Android高得多) 相关链接 由于页面不在焦点时,由于不活动,Safari断开了Web套接字连接

1
在uWebSockets.js和Websocket-Sharp中使用websocket压缩
我们有一个使用websocket进行连接的手机游戏。服务器是使用uWebSockets.js库的Node.js应用程序,客户端是使用Websocket-Sharp库的Unity应用程序。他们俩在一起玩的很好,我们没有遇到任何问题。 最近,我们想启用websocket压缩。这两个库都声明它们支持按消息压缩扩展,但是似乎有些东西与它们不兼容。因为当我们配置为使用压缩时,Websocket连接在握手时立即关闭。 我们还使用ws库测试了客户端,并提供了具有相同结果的压缩示例。我们尝试修改ws压缩选项,发现在注释serverMaxWindowBits选项(默认为协商值)时,可以建立连接,发送和接收消息也可以正常工作。我们还询问了如何在uWebsockets中控制serverMaxWindowBits。 我们尝试的最后一件事是连接最小的uWS服务器和websocket-sharp客户端。这是服务器的代码: const uWS = require('uWebSockets.js'); const port = 5001; const app = uWS.App({ }).ws('/*', { /* Options */ compression: 1, // Setting shared compression method maxPayloadLength: 4 * 1024, idleTimeout: 1000, /* Handlers */ open: (ws, req) => { console.log('A WebSocket connected via URL: ' + req.getUrl() …
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.