Socket.io: Obtenir l'en-tête HTTP 400 lors de l'utilisation de l'interrogation sur socket.io

Créé le 22 avr. 2015  ·  4Commentaires  ·  Source: socketio/socket.io

Salut,

Je reçois beaucoup de 400 en-têtes HTTP lors de l'utilisation de l'interrogation sur socket.io.
J'utilise le cluster nodejs :
Voici l'extrait de code :

si (cluster.isMaster) {
// Travailleurs de fourche.
//nombreCPU=1 ;
pour (var je = 0; je < numCPUs-1; je++) {
cluster.fork();
}
}
//code travailleur :
autre{

var socket_io = require('socket.io')(serveur);
var redis_adapter = require('socket.io-redis');
socket_io.adapter(redis_adapter({ host : config.redis.ip, port : config.redis.port }));

//reste du code
socket_io.on('connexion', fonction (socket) {

}

Tout pointeur à cet égard sera utile.

Merci d'avance

Closed due to inactivity

Commentaire le plus utile

Salut! J'ai eu beaucoup de mal à mettre en place un cluster avec socket.io, car il n'y a pas beaucoup d'exemples. J'ai un exemple de travail que j'utilise pour contrôler certains raspberryPi à

https://github.com/jordanpappas/raspi-car/tree/master/server

J'ai vraiment besoin de faire un exemple séparé afin de montrer comment faire fonctionner cela, mais pour l'instant, vous pouvez consulter le fichier d'index dans le lien. Il y a quelques choses que vous devez être sûr de faire pour que cela fonctionne.

  1. Utilisez redis (vous semblez déjà le faire, alors comparez la façon dont vous avez câblé l'adaptateur à mon exemple)
  2. Utilisez uniquement des websockets. Ceci est vrai pour les clients et le serveur. Ces erreurs que vous obtenez sont liées à l'interrogation, alors ne l'utilisez pas. Fais ça comme ça
var io = sio(server, { 'transports': ['websocket'] });

et sur le client :

var socket = io.connect('http://localhost:3000', { 'transports': ['websocket'] });

Cela devrait vous faire avancer dans la bonne direction, et je vais travailler ensemble pour obtenir un exemple simple.

Tous les 4 commentaires

Salut! J'ai eu beaucoup de mal à mettre en place un cluster avec socket.io, car il n'y a pas beaucoup d'exemples. J'ai un exemple de travail que j'utilise pour contrôler certains raspberryPi à

https://github.com/jordanpappas/raspi-car/tree/master/server

J'ai vraiment besoin de faire un exemple séparé afin de montrer comment faire fonctionner cela, mais pour l'instant, vous pouvez consulter le fichier d'index dans le lien. Il y a quelques choses que vous devez être sûr de faire pour que cela fonctionne.

  1. Utilisez redis (vous semblez déjà le faire, alors comparez la façon dont vous avez câblé l'adaptateur à mon exemple)
  2. Utilisez uniquement des websockets. Ceci est vrai pour les clients et le serveur. Ces erreurs que vous obtenez sont liées à l'interrogation, alors ne l'utilisez pas. Fais ça comme ça
var io = sio(server, { 'transports': ['websocket'] });

et sur le client :

var socket = io.connect('http://localhost:3000', { 'transports': ['websocket'] });

Cela devrait vous faire avancer dans la bonne direction, et je vais travailler ensemble pour obtenir un exemple simple.

Bien sûr, merci. J'ai résolu le problème. J'utilisais une bibliothèque de session persistante dans le cluster worker, ce qui est faux car la bibliothèque elle-même crée les travailleurs.

Ce problème a été fermé automatiquement. Veuillez vérifier si votre problème est résolu avec la dernière version et rouvrir si nécessaire (avec un violon reproduisant le problème si possible).

Perdre 4 heures dans ce problème

Cette page vous a été utile?
0 / 5 - 0 notes