Javascript 是否可以在一个html中创建多个websocket客户端?
这是我创建多websocket连接的代码:Javascript 是否可以在一个html中创建多个websocket客户端?,javascript,websocket,Javascript,Websocket,这是我创建多websocket连接的代码: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>runoob.com</title> <script type="text/javascript"> function WebSocketTest() { if ("WebSocket" in windo
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>runoob.com</title>
<script type="text/javascript">
function WebSocketTest() {
if ("WebSocket" in window) {
for (let i = 0; i < 300; i++) {
// open web socket
new WebSocket("ws://localhost:8070");
console.log("open" + i + "websocket");
}
}
}
</script>
</head>
<body>
<div id="sse">
<a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>
runoob.com
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<300;i++){
//开放式web套接字
新的WebSocket(“ws://localhost:8070”);
console.log(“打开”+i+“websocket”);
}
}
}
现在我想从服务器接收消息,如何编写代码?这样的代码可能共享ws变量,但不起作用
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>runoob.com</title>
<script type="text/javascript">
function WebSocketTest() {
if ("WebSocket" in window) {
for (let i = 0; i < 300; i++) {
// open web socket
var ws = new WebSocket("ws://localhost:8070");
console.log("open" + i + "websocket");
ws.onmessage = function (evt)
{
var received_msg = evt.data;
};
}
}
}
</script>
</head>
<body>
<div id="sse">
<a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>
runoob.com
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<300;i++){
//开放式web套接字
var ws=newwebsocket(“ws://localhost:8070”);
console.log(“打开”+i+“websocket”);
ws.onmessage=函数(evt)
{
收到的var_msg=evt.data;
};
}
}
}
这样编写代码,但在我的测试中,Chrome将websocket连接限制在250以下:
function newcon(i) {
var ws = new WebSocket("wss://ws.example.com");
console.log("open" + i + "websocket");
ws.onopen = function () {
ws.send("client " + i + " send message");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
};
ws.onclose = function () {
console.log("closed");
};
}
调用函数:
function WebSocketTest() {
if ("WebSocket" in window) {
for (let i = 0; i < 2; i++) {
newcon(i);
}
}
}
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<2;i++){
纽康(一);
}
}
}
这样编写代码,但在我的测试中,Chrome将websocket连接限制在250以下:
function newcon(i) {
var ws = new WebSocket("wss://ws.example.com");
console.log("open" + i + "websocket");
ws.onopen = function () {
ws.send("client " + i + " send message");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
};
ws.onclose = function () {
console.log("closed");
};
}
调用函数:
function WebSocketTest() {
if ("WebSocket" in window) {
for (let i = 0; i < 2; i++) {
newcon(i);
}
}
}
函数WebSocketTest(){
如果(“窗口中的WebSocket”){
for(设i=0;i<2;i++){
纽康(一);
}
}
}
大多数浏览器都会阻止JavaScrip引擎以这种方式使用。他们将限制可用WebSocket连接的数量(上次我测试Chrome时限制为300个)。。。服务器可能会处理更多的WebSocket客户端,然后浏览器会愿意打开。@Myst也许,但您可以一次运行多个浏览器来使用更多的客户端clients@Dolphin“我正在测试服务器可以处理多少websocket连接”-这在应用程序中比在web浏览器中处理得更好。用任何语言编写一个程序,该程序有一个WebSocket库可供使用,然后您可以创建和管理任意数量的WebSocket客户端连接。@Myst“您真的可以打开更多浏览器来克服连接限制吗?”-为什么不可以?你为什么不这么想?它们只是TCP连接,就像其他连接一样。它们不受操作系统的限制,只受浏览器的限制。因此,如果浏览器将其创建的WebSocket客户端数量限制为(比如)每个进程300个,那么运行X个浏览器进程应该能够总共创建X*300个客户端,除非浏览器进程彼此对话以共享单个限制。但同时运行不同类型的浏览器很容易克服这个问题。@RemyLebeau,试试看。您会注意到浏览器通常是多进程的野兽,具有共享内存和IPC机制。他们可能比人们想象的更难孤立。更有可能的是,他们将在多个流程中实施相同的限制。但也许我错了。我只是觉得这并不像理论上说的那么简单。大多数浏览器都会阻止他们的JavaScrip引擎以这种方式使用。他们将限制可用WebSocket连接的数量(上次我测试Chrome时限制为300个)。。。服务器可能会处理更多的WebSocket客户端,然后浏览器会愿意打开。@Myst也许,但您可以一次运行多个浏览器来使用更多的客户端clients@Dolphin“我正在测试服务器可以处理多少websocket连接”-这在应用程序中比在web浏览器中处理得更好。用任何语言编写一个程序,该程序有一个WebSocket库可供使用,然后您可以创建和管理任意数量的WebSocket客户端连接。@Myst“您真的可以打开更多浏览器来克服连接限制吗?”-为什么不可以?你为什么不这么想?它们只是TCP连接,就像其他连接一样。它们不受操作系统的限制,只受浏览器的限制。因此,如果浏览器将其创建的WebSocket客户端数量限制为(比如)每个进程300个,那么运行X个浏览器进程应该能够总共创建X*300个客户端,除非浏览器进程彼此对话以共享单个限制。但同时运行不同类型的浏览器很容易克服这个问题。@RemyLebeau,试试看。您会注意到浏览器通常是多进程的野兽,具有共享内存和IPC机制。他们可能比人们想象的更难孤立。更有可能的是,他们将在多个流程中实施相同的限制。但也许我错了。我只是觉得这不像理论上说的那么容易。