仅http上的Socket io客户端连接

问题描述

我的套接字io服务器没有ssl证书,因此它仅适用于htpp 另一方面,我的网页上有ssl证书,

因此,当我在此页面(在https中)连接到套接字Web服务器(在http中)时,它会在https中自动更改,因此必然会出现错误

连接:

//Here I'm connecting in http
const socket = io("http://XXX.XX.XXX.XX:XXXX",{secure:false})

这里有说明问题的图片,我写了“ http:// xxxxxxxx”,并且在控制台中出现错误

 //But in the error we see that change and it's try to connect with https
 "GET https://XXX.XX.XXX.XX:XXXX/socket.io/?EIO=3&transport=polling&t=NFiqorQ   
 net :: ERR_SSL_PROTOCOL_ERROR"

PS:当我尝试用wamp连接到websocket时(在http中),这是可行的...

如果有人知道如何强制连接到http,请帮助我

Client side error Client side conection

解决方法

确保它与您的服务器有关。我只与nginx合作,所以我可以谈论一下,但我肯定它与Apache类似。我在nginx中创建了虚拟服务器块,其中一个是针对启用了ssl和证书的文件服务器。之后,我为套接字设置了一个块,并将服务器设置为仅监听http。

upstream socket {

server 127.0.0.1:2095;

server 127.0.0.1:80 backup;

keepalive 15;

}


server {
    
listen 80;
    
listen [::]:80;
    
        
   
root /var/www/socket/;
..... and so on

我总是使用子域来连接套接字,例如socket.domain.com,但这不是必需的。

相同,但启用了ssl并链接了证书,这是我为文件服务器所做的,因此它工作得很好。

var HOST = '144.125.....';
const socket = io(HOST,{secure:true})