Socket.io: problème de déploiement

Tanaka

New Member
#1
Bonjour à tous,

J'ai un soucis au niveau du déploiement de mon application Node.js qui comprend une partie en websocket (librairie socket.io).

L'erreur intervient au niveau de mon fichier server.js sur la dernière ligne ci-dessous:

Server.listen(configuration.serverConfiguration.port, configuration.serverConfiguration.hostname, () => {
console.log("api started");
});
-----------------------------------
//serverConfiguration
hostname: 'localhost',
port: 'passenger'
----------------------------------

Avez-vous déjà eu le même problème ? Je bloque car aucune documentation, aucun historique


Pour info mon fichier socket.js qui est exporté dans mon server.js

let http = require('http').Server(server);
http.listen(3000, function () {
console.log('listenning in http://localhost 3000');
});
let io = require('socket.io').listen(http);
io.on('connection', (socket) => {
........
});


Mille mercis pour votre aide
 

marckisscool

Active Member
#2
Bonjour,

Allez je me lance à tenter une question bête, mais vous êtes sur que le port 3000 est disponible? en http j'aurais plutôt tapé le 80 ou 8080 (même pas sur qu'il soit autorisé celui-là).
La bonne question serait de savoir si on dispose des ports que l'on souhaite ou si nous avons des restrictions sur la dispo des ports.

En espérant que ça fait avancer la résolution ;-)
 

Tanaka

New Member
#3
Bonjour Marckisscool,

Merci, d'après le support de PlanetHoster , le port à utiliser serait 'passenger' , malheureusement même avec cette modification, j'ai toujours une erreur

Mon fichier socket.js
var express = require('express');
var server= express();

let http = require('http').Server(server);
var port = 'passenger';
let io = require('socket.io')(http);


http.listen(port, function () {
console.log('listenning in http://localhost', port);
});


Tout semble correct mais j'ai toujours l'erreur !!
 

marckisscool

Active Member
#4
Bonjour,

Etes vous sur d avoir bien compris? Un port est forcement numérique, et le faite de mentionner passenger me fait penser à phusion passenger qui a comme config le port laissé à vide et le host se nomme passenger. C est lui qui va servir de proxy en faite du coup vous ne gérez pas les ports de votre côté.
Ça me semblerait logique car il est intégré pour cloudlinux et explique la configuration que vous tentez.

En esperant que ça vous aide.
 
Dernière édition:

Tanaka

New Member
#5
Bonjour merci pour votre aide
En configurant mon fichier server.js (Application startup file) avec le hostname: 'passenger' et port : 0 cela fonctionne

Par contre lorsque j'ajoute mon fichier socket.js qui contient la configuration de ma socket et cela ne fonctionne plus.

Mon fichier socket.js :
module.exports = {
start: function (express) {

let http = require('http');
var server = http.createServer(server);
var port = 0;
let io = require('socket.io')(server);

io.on('connection', (socket) => {
...........
}
http.listen(port, function () {
console.log('listenning in http://localhost', port);
});

Mon fichier server.js:
const express = require('express')();
const socket = require('./socket')
socket.start(express);


Dois-je préciser un port spécifique pour cette socket?
 

marckisscool

Active Member
#6
Bonjour,

Pour vous aidez dans l'utilisation de phusion passenger vous avez la [lien: doc officielle ] (pas super explicite) et par contre un exemple simple de connexion : [lien: demo de connexion]

Je ne suis pas un pro de node.js, je l'utilise de façon basique pour faire du reverse sur du javascript, du coup mes connaissances sont relativement limitées sur le sujet.

En espérant que ça vous aide.
 

Tanaka

New Member
#7
Bonjour,

J'ai réussi à faire fonctionner mon back en utilisant cette configuration:

hostname: 'passenger'
port : 0

Pour mon fichier socket.js, j'ai intégré cette partie de code :

if (typeof(PhusionPassenger) !== 'undefined') {
PhusionPassenger.configure({ autoInstall: false });
}

if (typeof(PhusionPassenger) !== 'undefined') {
serverSocket.listen('passenger');
} else {
serverSocket.listen(3000);
}


Par contre j'ai toujours une erreur 502 bad gateway lorsque j'utilise mon API.
J'investigue sur le fait que mon fichier de point d'entrée est server.js et non app.js
 

slimus213

New Member
#9
Voici la réponse du support:
Il semble qu'une partie de la réponse est présente ici : https://features.planethoster.com/topic/ajout-compatibilité-websocket

"Les websockets ne sont pas compatibles avec World présentement pour des raisons techniques."

Une piste de solution est proposée par Gab sur le forum. Il y a une page demo ainsi qu'un source code pour tester qui sont également proposés par Gab.

je viens de tester le code ça fonctionne (par contre j'ai dû inclure le main.js et le css dans index.html) meme si j'ai une erreur dans la console navigateur:
websocket.js:43 WebSocket connection to 'ws://nodetest.cyberdyne.agency/socket.io/?EIO=4&transport=websocket&sid=VaLoJSHZRQEf6MBiAAAA' failed:
doOpen @ websocket.js:43


tu tester sur mon site : https://nodetest.cyberdyne.agency/
 
Haut