HTML5 websockets是(并且已经有一段时间)一个热门话题,因为它们优雅地实现了实时 服务器端推送.
我目前有一个工作应用程序,其中包含由Tomcat 7.0.30 提供支持的websockets,其中包括websocket支持.但是将其转移到生产环境会引发问题.
主要是我想知道每个浏览会话可以同时操作(打开)的最大连接数; 一个浏览会话意味着单个浏览器标签或窗口.
开放的websocket连接是否与Web服务器可以同时处理的最大连接数相加?例如MaxClients在Apache中.
相反,浏览器本身限制的单个浏览会话的最大websockets数是多少?正如此博客文章所示,截至2012年4月,不同的浏览器支持不同数量的开放 websocket连接.(我个人的目标是每个浏览会话 1个开放的websocket ;但是这个信息仍然很好知道).
TL/DR:
ws:和wss:连接?到目前为止,在教程,博客和官方文档中,我看到:
这些有些不同吗?有些旧版本吗?
我一直认为'Microsoft.Web'命名空间用于预发布代码,但即使.NET会议中包含内置的System.Web.WebSockets命名空间,Build会议中的演示也使用此命名空间.
System.Web.WebSockets似乎与Microsoft.Web.WebSockets具有相同的API,但是具有以AspNet为前缀的类和方法.
System.ServiceModel.WebSockets是WCF命名空间的一部分,这也是放置这些东西的合理位置.
帮助 - 我很困惑.我该怎么用?
我对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中的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访问它(因为我们首先认为它可能是某种同源策略问题,所以我得到了重定向),不明白它是如何重要的.至少我希望它不......
欢迎任何想法.
编辑:将站点添加到受信任区域也不起作用.
我需要连接到 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) 还有更多要补充的内容.是否可以仅使用HTML和JavaScript构建torrent客户端.你不能使用像Java,ActiveX,NaCl这样的东西......如果是的话,请给出高级描述.
我对前端dev没有太多了解,但我认为websockets能够进行网络连接(是否可以将一个客户端连接到另一个客户端,而不需要通过服务器获取所有数据?).我知道您无法使用JavaScript编写文件,所以我认为要下载的文件必须完全保存在内存中,否则客户端必须使用HTML5中的一个新API来存储内容.
如果我们通过相同的html5 websocket发送两条消息,彼此分开毫秒,
从理论上讲,消息的到达顺序是否与发送的顺序不同?
我正在考虑使用websockets和http构建REST API,我使用websockets告诉客户端新数据可用或直接向客户端提供新数据.
以下是它如何工作的一些不同的想法:
ws = websocket
想法A:
GET /usersPOST /usersGET /users想法B:
GET /users/usersPOST /users想法C:
GET /users/usersPOST /users它获得id 4GET /users/4我死了:
GET /users/users.POST /users/usersGET /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请求.
我正在尝试使用Chrome开发者工具检查websocket流量.根据我的研究,您似乎应该能够使用网络标签查看它 - 它甚至还有一个'ws'的过滤器.
但是,我一直在检查我知道正在使用websockets的网站,并且无法找到检查来回发送的消息的方法.使用Chrome v56,也试过没有运气的Safari ...
有谁知道如何实现这一目标?
是否可以在@ServerEndpoint中获取HttpServletRequest?主要是我试图得到它所以我可以访问HttpSession对象.
websocket ×10
html5 ×5
javascript ×5
socket.io ×2
.net ×1
bittorrent ×1
html ×1
java-ee-7 ×1
jax-rs ×1
networking ×1
node.js ×1
react-hooks ×1
reactjs ×1
rest ×1
wcf ×1