当我打开新窗口时,socket.io收到错误响应

我正在构建一个使用socket.io和Web Worker api每秒从服务器获取更新的Web应用程序。其中一个按钮正在打开一个新窗口,当打开新窗口时,socket.io停止工作并收到错误的请求响应

//part of the code

var socket = io({transports: ['polling']});

worker = new Worker("web_worker.js");

worker.onmessage = function(event){
   socket.emit("check_for_updates");   
} 

//this function is called when a button is pressed
function new_window(client)
{
    var uid = client.uid;
    var new_window = window.open("/new?uid="+uid);
}

控制台中显示的错误:

polling-xhr.js:270 GET http://localhost/socket.io/?EIO=3&transport=polling&t=Mv0tQCC&sid=LnzFU8ClZrY0NHK5AA-r 400(错误请求)

polling-xhr.js:270 POST http://localhost/socket.io/?EIO=3&transport=polling&t=Mv0tQC-&sid=LnzFU8ClZrY0NHK5AA-r 400(错误请求)

xzsytc 回答:当我打开新窗口时,socket.io收到错误响应

所以我设法解决这个问题-问题是我在新窗口中使用默认设置打开了一个新的套接字,这导致第一个套接字崩溃。我的解决方案是使用Sockt.io基座中的命名空间-

服务器端:

var main_socket = io(http);
socket = main_socket.of('/first');
socket.once("connection",(socket) =>{
    console.log("user connected");

    socket.on("disconnect",function(){
        console.log("user disconnected");
    });

var second_socket = main_socket.of('/second');
second_socket.once("connection",(second_socket) =>{
    console.log("second connection");

客户端:

//part of the code

var socket = io(nsp="/first",Option={transports: ['polling']});

worker = new Worker("web_worker.js");

worker.onmessage = function(event){
   socket.emit("check_for_updates");   
} 

//this function is called when a button is pressed
function new_window(client)
{
    var socket = io(nsp="/second",Option={transports: ['polling']});
    var uid = client.uid;
    var new_window = window.open("/new?uid="+uid);
}

我希望它将对以后的人有所帮助

本文链接:https://www.f2er.com/3151580.html

大家都在问