首页 > 解决方案 > 无法连接 Socket IO express SSL(http 工作正常)

问题描述

问题:

我已经设置 express 以使用 SSL 运行,它工作得非常好。但是由于某种原因,客户端在尝试连接到 Socket IO 时不断输出 404 错误。

服务器端代码:

var fs = require('fs');
var express = require('express');
var app = express();
var https = require('https');
var io = require('socket.io')(https);

// Certificate
const privateKey = fs.readFileSync('./privkey.pem', 'utf8');
const certificate = fs.readFileSync('./fullchain.pem', 'utf8');

const credentials = {
    key: privateKey,
    cert: certificate
};

const httpsServer = https.createServer(credentials, app);

app.get('/', function(req, res){
    //...
});

httpsServer.listen(3000, function(){
    console.log('listening on *:3000');
});

io.on('connection', function(socket) {
    //...
});

用于连接的客户端代码: var socket = io()

错误:

XHRGET https://localhost:3000/socket.io/?EIO=3&transport=polling&t=NRf9_6U [HTTP/1.1 404 Not Found 1ms]

在这里尝试了类似问题的几种解决方案,但都导致了相同的问题。我怀疑这里可能使用了 3000 端口,但我不确定。当我简单地使用 http 时,它立即可以正常工作。

PS:此处替换localhost为实际域名,以免做广告。

标签: node.jsexpresssocket.io

解决方案


推荐阅读