Socket.io: Abrufen des HTTP-Headers 400 bei Verwendung von Polling auf socket.io

Erstellt am 22. Apr. 2015  ·  4Kommentare  ·  Quelle: socketio/socket.io

Hallo,

Ich erhalte viele 400 HTTP-Header, während ich die Abfrage auf socket.io verwende.
Ich verwende nodejs-Cluster:
Hier ist das Code-Snippet:

if (cluster.isMaster) {
// Gabelarbeiter.
//AnzahlCPUs=1;
for (var i = 0; i < numCPUs-1; i++) {
cluster.fork();
}
}
//Arbeitercode:
anders{

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

// Rest des Codes
socket_io.on('Verbindung', Funktion (Socket) {

}

Jeder diesbezügliche Hinweis ist hilfreich.

Danke im Voraus

Closed due to inactivity

Hilfreichster Kommentar

Hallo! Ich hatte große Probleme, einen Cluster mit socket.io einzurichten, da es nicht viele Beispiele gibt. Ich habe ein funktionierendes Beispiel, mit dem ich einige HimbeerPis steuere

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

Ich muss wirklich ein separates Beispiel erstellen, um zu zeigen, wie das funktioniert, aber jetzt können Sie sich die Indexdatei im Link ansehen. Es gibt ein paar Dinge, die Sie unbedingt tun müssen, damit dies funktioniert.

  1. Verwenden Sie redis (Sie scheinen das bereits zu tun, also vergleichen Sie, wie Sie den Adapter mit meinem Beispiel verkabelt haben)
  2. Verwenden Sie nur Websockets. Dies gilt sowohl für Clients als auch für den Server. Diese Fehler, die Sie bekommen, haben mit dem Polling-Zeug zu tun, also verwenden Sie es nicht. Mach das so
var io = sio(server, { 'transports': ['websocket'] });

und auf Client:

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

Dies sollte Sie in die richtige Richtung bewegen, und ich werde daran arbeiten, ein einfaches Beispiel zusammenzustellen.

Alle 4 Kommentare

Hallo! Ich hatte große Probleme, einen Cluster mit socket.io einzurichten, da es nicht viele Beispiele gibt. Ich habe ein funktionierendes Beispiel, mit dem ich einige HimbeerPis steuere

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

Ich muss wirklich ein separates Beispiel erstellen, um zu zeigen, wie das funktioniert, aber jetzt können Sie sich die Indexdatei im Link ansehen. Es gibt ein paar Dinge, die Sie unbedingt tun müssen, damit dies funktioniert.

  1. Verwenden Sie redis (Sie scheinen das bereits zu tun, also vergleichen Sie, wie Sie den Adapter mit meinem Beispiel verkabelt haben)
  2. Verwenden Sie nur Websockets. Dies gilt sowohl für Clients als auch für den Server. Diese Fehler, die Sie bekommen, haben mit dem Polling-Zeug zu tun, also verwenden Sie es nicht. Mach das so
var io = sio(server, { 'transports': ['websocket'] });

und auf Client:

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

Dies sollte Sie in die richtige Richtung bewegen, und ich werde daran arbeiten, ein einfaches Beispiel zusammenzustellen.

Sicher, danke. Ich habe das Problem gelöst. Ich habe die Sticky-Session-Bibliothek im Cluster-Worker verwendet, was falsch ist, da die Bibliothek selbst die Worker erstellt.

Dieses Problem wurde automatisch geschlossen. Bitte überprüfen Sie, ob Ihr Problem mit der neuesten Version behoben ist, und öffnen Sie es bei Bedarf erneut (mit einer Geige , die das Problem nach Möglichkeit reproduziert).

Verschwenden Sie 4 Stunden mit diesem Problem

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen