标签: websocket

HTML5 websockets:最大打开连接数?

HTML5 websockets是(并且已经有一段时间)一个热门话题,因为它们优雅地实现了实时 服务器端推送.

我目前有一个工作应用程序,其中包含由Tomcat 7.0.30 提供支持的websockets,其中包括websocket支持.但是将其转移到生产环境会引发问题.

主要是我想知道每个浏览会话可以同时操作(打开)的最大连接数; 一个浏览会话意味着单个浏览器标签或窗口.

开放的websocket连接是否与Web服务器可以同时处理的最大连接数相加?例如MaxClients在Apache中.

相反,浏览器本身限制的单个浏览会话的最大websockets数是多少?正如此博客文章所示,截至2012年4月,不同的浏览器支持不同数量的开放 websocket连接.(我个人的目标是每个浏览会话 1个开放的websocket ;但是这个信息仍然很好知道).

TL/DR:

  1. 是什么限制了每次浏览会话可能的websockets数量?是客户吗?服务器?或两者兼而有之?
  2. 相同的限制是否适用于两者ws:wss:连接?

javascript html5 web-applications websocket

48
推荐指数
2
解决办法
3万
查看次数

由Microsoft WebSockets命名空间混淆

到目前为止,在教程,博客和官方文档中,我看到:

  • Microsoft.Web.WebSockets
    • 从NuGet获得
    • 程序集是Microsoft.WebSockets,但Namespace是Microsoft.Web.WebSockets
    • 最后更新于2011年9月14日
    • 包含WebSocketHandler,WebSocketCollections,WebSocketExtensions
  • System.Web.WebSockets
    • .NET 4.5的一部分,可在Visual Studio 11 Developer Preview中使用
    • 包含AspNetWebSocket,AspNetWebSocketContext,AspNetWebSocketOptions类
    • MSDN上的文档
  • System.Net.WebSockets
    • 感谢Ladislav Mrnka指出这一点
    • .NET 4.5的一部分,可在Visual Studio 11 Developer Preview中使用
    • 包含WebSocket,HttpListenerWebSocketContext等
    • MSDN上的文档
  • System.ServiceModel.WebSockets
    • 我一定想到我在某个地方见过这个,现在找不到它
  • Microsoft.ServiceModel.WebSockets
    • html5labs.interoperabilitybridges.com/...获得.
    • 安装在[Program Files]\Microsoft SDKs\WCF WebSockets\11.06.22\bin中
    • 包含WebSocketHost,WebSocketService,WebSocketsService类,以及接口和集合
    • 最后更新于2011年6月22日

这些有些不同吗?有些旧版本吗?

我一直认为'Microsoft.Web'命名空间用于预发布代码,但即使.NET会议中包含内置的System.Web.WebSockets命名空间,Build会议中的演示也使用此命名空间.

System.Web.WebSockets似乎与Microsoft.Web.WebSockets具有相同的API,但是具有以AspNet为前缀的类和方法.

System.ServiceModel.WebSockets是WCF命名空间的一部分,这也是放置这些东西的合理位置.

帮助 - 我很困惑.我该怎么用?

.net wcf html5 websocket

47
推荐指数
1
解决办法
9711
查看次数

使用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 has disconnected!');
    });

    // Sends a message to the server via sockets
    function sendMessageToServer(message) {
      socket.send(message);
    };
</script>
Run Code Online (Sandbox Code Playgroud)

服务器端

// Require HTTP module (to start …
Run Code Online (Sandbox Code Playgroud)

javascript html5 websocket node.js socket.io

47
推荐指数
2
解决办法
13万
查看次数

IE10上的WebSocket给出了一个SecurityError

我目前正在使用JavaScript中的WebSockets在IE10(Windows 8)下开发一个网站.它在Firefox 18和Chrome 25下运行良好,但在IE10上,当我建立连接时,我得到一个SecurityError.

我正在做的事情似乎非常简单:

websocket = new WebSocket('wss://hello.dev.mydomain.net');
Run Code Online (Sandbox Code Playgroud)

但IE不喜欢它:

SCRIPT5022: SecurityError 
Run Code Online (Sandbox Code Playgroud)

该脚本位于" https://test.dev.mydomain.net "(显然不是真正的地址).

困扰我的是,如果我只是双击我本地计算机上的文件(例如file:// ...)它就可以了.更糟糕的是:如果我使用fiddler监控HTTP流量......它也有效.然而,如果没有fiddler似乎没有任何联系,详见API的规范.(见下文.)

根据websocket规范判断,Chrome/Firefox上也应该出现异常......但事实并非如此.所以我怀疑它有什么与HTTP/HTTPS有关.在任何情况下,我在httpS页面上使用wsS套接字......此外:当我用在线示例中找到的另一个有效服务器替换wss地址时,它可以工作.

我不知道这是否相关,但test.dev.mydomain.net的IP是10.14.xx,其中hello.dev.mydomain.net是194.247.xx我不知道它是否会触发某种安全性仅在IE上......

还有一件事:我有*.dev.mydomain.net证书,IE似乎没有问题.该脚本最初驻留在名为my.name.dev.mydomain.net的服务器上,但由于我从另一个URL访问它(因为我们首先认为它可能是某种同源策略问题,所以我得到了重定向),不明白它是如何重要的.至少我希望它不......

欢迎任何想法.

编辑:将站点添加到受信任区域也不起作用.

javascript websocket internet-explorer-10

47
推荐指数
4
解决办法
4万
查看次数

正确使用 React hooks + WebSockets

我需要连接到 WebSockets 服务器并记录它的消息。使用 React 类组件,我会将这个逻辑放在componentDidMount生命周期钩子中并愉快地继续,但我不确定如何使用钩子正确实现它。

这是我的第一次尝试。

import React, {useEffect} from 'react';

export default function AppWs() {
  useEffect(() => {
    let ws = new WebSocket('wss://ws.kraken.com/');
    ws.onopen = () => console.log('ws opened');
    ws.onclose = () => console.log('ws closed');

    ws.onmessage = e => {
      const message = JSON.parse(e.data);
      console.log('e', message);
    };

    return () => {
      ws.close();
    }
  }, []);

  return (
    <div>hooks + ws</div>
  )
}
Run Code Online (Sandbox Code Playgroud)

我向 中添加了连接和日志逻辑useEffect,提供了带有依赖项的空数组,并且一切正常。直到我需要添加pause状态以暂停日志记录。

export default function AppWs() {
  const [isPaused, setPause] = …
Run Code Online (Sandbox Code Playgroud)

javascript websocket reactjs react-hooks

47
推荐指数
1
解决办法
2万
查看次数

是否可以仅使用HTML(5)和JavaScript构建torrent客户端?

还有更多要补充的内容.是否可以仅使用HTML和JavaScript构建torrent客户端.你不能使用像Java,ActiveX,NaCl这样的东西......如果是的话,请给出高级描述.

我对前端dev没有太多了解,但我认为websockets能够进行网络连接(是否可以将一个客户端连接到另一个客户端,而不需要通过服务器获取所有数据?).我知道您无法使用JavaScript编写文件,所以我认为要下载的文件必须完全保存在内存中,否则客户端必须使用HTML5中的一个新API来存储内容.

html javascript html5 bittorrent websocket

46
推荐指数
5
解决办法
2万
查看次数

websocket消息可以无序到达吗?

如果我们通过相同的html5 websocket发送两条消息,彼此分开毫秒,

从理论上讲,消息的到达顺序是否与发送的顺序不同?

networking html5 websocket socket.io

46
推荐指数
2
解决办法
1万
查看次数

如何组合websockets和http来创建一个REST API,使数据保持最新?

我正在考虑使用websockets和http构建REST API,我使用websockets告诉客户端新数据可用或直接向客户端提供新数据.

以下是它如何工作的一些不同的想法:
ws = websocket

想法A:

  1. 大卫得到所有用户 GET /users
  2. 雅各布添加一个用户 POST /users
  3. 将ws消息发送给具有新用户存在信息的所有客户端
  4. 大卫通过ws和电话回复了一条消息 GET /users

想法B:

  1. 大卫得到所有用户 GET /users
  2. 大卫注册以在完成更改时获取ws更新 /users
  3. 雅各布添加一个用户 POST /users
  4. 新用户由ws发送给David

想法C:

  1. 大卫得到所有用户 GET /users
  2. 大卫注册以在完成更改时获取ws更新 /users
  3. Jacob添加一个用户,POST /users它获得id 4
  4. David通过ws收到新用户的id 4
  5. 大卫得到了新用户 GET /users/4

我死了:

  1. 大卫得到所有用户 GET /users
  2. 大卫注册以在完成更改时获取ws更新/users.
  3. 雅各布添加一个用户 POST /users
  4. 大卫收到一条消息,表示已完成更改 /users
  5. 大卫只通过电话获得三角洲 GET /users?lastcall='time of step one'

哪种选择最好,有哪些优缺点?
这是另一个更好的'Idea E'吗?
我们甚至需要使用REST还是需要所有数据?

编辑
为了解决数据不同步的问题,我们可以提供标题
"If-Unmodified-Since"
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since
或"E-Tag"
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
或两者都有PUT请求.

rest jax-rs websocket restful-architecture

46
推荐指数
3
解决办法
8675
查看次数

如何使用Chrome开发者工具检查websocket流量?

我正在尝试使用Chrome开发者工具检查websocket流量.根据我的研究,您似乎应该能够使用网络标签查看它 - 它甚至还有一个'ws'的过滤器.

但是,我一直在检查我知道正在使用websockets的网站,并且无法找到检查来回发送的消息的方法.使用Chrome v56,也试过没有运气的Safari ...

有谁知道如何实现这一目标?

websocket google-chrome-devtools

46
推荐指数
2
解决办法
2万
查看次数

从Web Socket @ServerEndpoint中的HttpServletRequest访问HttpSession

是否可以在@ServerEndpoint中获取HttpServletRequest?主要是我试图得到它所以我可以访问HttpSession对象.

websocket java-ee-7

45
推荐指数
3
解决办法
5万
查看次数