我被这个问题困扰了很长时间。我使用 socket.io 开发了一个移动应用程序,它在我的本地运行良好。但是,我正在尝试将它部署在 PlanetHoster 上,但我遇到了套接字连接错误:
火狐浏览器:
XHR GET https://myapp.com/socket.io/?EIO=4&transport=polling&t=NYZtcqo CORS Missing Allow Origin
Chrome 浏览器(使用 --disable-web-security):
XHR?EIO=4&transport=polling&t=NYZuyK1 500 xhr zone-evergreen.js:2845 1.7 kB
app.js(后端)
const express = require('express');
// Http Handling (parsing & securing)
const bodyparser = require('body-parser');
const helmet = require ('helmet');
const cors = require('cors');
// Import public API layer v1
const roomApi = require('./core/layer_api/roomApi');
const userApi = require('./core/layer_api/userApi');
const http = require('http');
const serverSocket = http.createServer(server);
const io = require('socket.io')(serverSocket, {
cors: {
origin: "http://localhost:8100",
methods: ["GET", "POST"]
}
});
io.on('connection', function (socket) {
.................................
});
if (typeof(PhusionPassenger) !== 'undefined') {
serverSocket.listen('passenger');
} else {
serverSocket.listen(3000);
}
server.listen(0, 'passenger');
socket.js(前端)
import { io , Socket } from 'socket.io-client';
@Injectable({
providedIn: 'root'
})
export class SocketService {
public socket: Socket ;
constructor() {
this.socket = io("https://myapp.com");
}
}
在我的 socket.service.ts 中,我尝试了这个但没有成功:
this.socket = io("https://myapp.com,{ transports: ['polling'], withCredentials: true });
package.json
socket.io-client": "^3.1.2"(前端)
socket.io": "^3.1.2"(后端)
你知道我该如何解决这个问题吗?你知道我是否必须使用 Node.js Cluster 吗?
<块引用>https://socket.io/docs/v3/using-multiple-nodes/index.html
提前感谢您的帮助