首页 > 解决方案 > socket.io error on PlanetHoster - Phussion Passenger

问题描述

I am stuck on this problem for a long time. I developed a mobile app using socket.io and it works fine on my local. However I am trying to deploy it on PlanetHoster and I am facing this error for socket connection:

Firefox browser:
XHR GET https://myapp.com/socket.io/?EIO=4&transport=polling&t=NYZtcqo CORS Missing Allow Origin

Chrome browser (using --disable-web-security):
XHR?EIO=4&transport=polling&t=NYZuyK1 500 xhr zone-evergreen.js:2845 1.7 kB

app.js (back-end)

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 (front-end)

import { io , Socket } from 'socket.io-client';

@Injectable({
    providedIn: 'root'
  })
  export class SocketService {
        public socket: Socket ;
        
        constructor() {
            this.socket = io("https://myapp.com");
         }
}

In my socket.service.ts I tried this without success:
this.socket = io("https://myapp.com,{ transports: ['polling'], withCredentials: true });

package.json
socket.io-client": "^3.1.2" (front-end)
socket.io": "^3.1.2" (back-end)

Do you have any idea how I can resolve this ? Do you know if I have to use Node.js Cluster ?

https://socket.io/docs/v3/using-multiple-nodes/index.html

Thanks for your help in advance

标签: node.jsnginxionic-frameworksocket.io

解决方案


推荐阅读