2017-03-16 112 views
0

对不起的工作,如果我错过了一些资料,这是我的计算器上的第一篇文章。获取Socket.io与新SSL加密网站

我有我的网站,有普通的HTTP请求,但今天我已经添加了SSL加密到我的网站,因为我听说过,它会吸引更好的交通到我的网站,但之后我添加SSL到我的网站我收到来自socket.io的错误:“ERR_CONNECTION_CLOSED”。

编辑:另外要注意的是,当我在与HTTP和不htttps网址栏中输入插口连接到端口。

这是服务器端用来连接端口的内容: var io = require('socket.io')(4002);

这是客户端用来连接的端口:

VAR HOST = “:4002”; 插座= 10(HOST);

在此先感谢您的帮助。

+0

请告诉我们您使用,使插座的代码。io连接?而且,您用于侦听连接的服务器端代码?关于代码的问题应该包括粘贴到问题本身的相关代码。 – jfriend00

+0

这是服务器端用来连接端口的内容: var io = require('socket.io')(4002);这是客户端用来连接端口的内容: 插座= 10(HOST); – JacobF

回答

0

如果我从以前的故障排除记错,客户端功能io()必须要么不带参数(在这种情况下,作为包含网页加载或者它必须通过实际的URL连接回同一来源。

所以,当你这样做:

var HOST = ":4002"; 
io(HOST); 

你正在做的:

io(":4002"); 

这不在于它能够理解的形式。下面是一些形式,将工作:

io();      // connect to same host and port as the containing webpage 
io("https://somehost:4002"); // connect to specific host and port 

具体文档io()here

io(url[, options]) 

url (String) 
options (Object) 
Returns Socket 

凡说url,它期待一个实际的URL,格式为URL。


要创建一个HTTPS服务器socket.io使用,首先创建服务器,然后通过服务器socket.io这样的:

const https = require('https'); 
const fs = require('fs'); 

const options = { 
    key: fs.readFileSync('agent2-key.pem'), 
    cert: fs.readFileSync('agent2-cert.pem') 
}; 

// create server and start it 
const server = https.createServer(options).listen(4002); 

// attach socket.io to your server 
const io = require('socket.io')(server); 

// attach event handlers to socket.io 
io.on('connection', ....); 

有关创建更多详情,请参见socket.io https documentation https服务器。


您可以监听并登录可能在服务器端发生这样的错误:

server.on('clientError', (err, socket) => { 
    console.log("clientError", err); 
}).on('error', err => { 
    console.log("serverError", err); 
}); 
+0

如果我只是输入:4002作为我从本地主机准备好的数据,只是为了确保我按照你的要求做了同样的工作: SOCKET = io(“https://csgopole.com:4002”) ; 当我试着使用HTTPS访问网站它仍然给我的错误: ERR_CONNECTION_CLOSED 我假设这不得不因与在服务器端的东西,我曾经与服务器连接到端口的代码方是: var io = require('socket.io')(4002); – JacobF

+0

使用正确协议的完整URL。 – jfriend00

+0

由于某些原因,我在完整的网址中删除了它。我用https – JacobF

0

尝试用安全设置为true的连接。

var socket = io.connect('https://localhost', {secure: true});<br> 

你也可以这样做:让正常的HTTP您的主页加载,那么当浏览器升级协议的WebSockets,然后再升级到HTTPS。

+0

这是我如何选择我想要使用的端口: var io = require('socket.io')(4002); – JacobF

+0

但是,您必须在代码中的某处初始化连接。那个时候,把socket当作安全的。 – Araphel

+0

编辑答案。你需要尝试一下。 – Araphel