Socket.io-Fehler: der WebSocket-geschlossen ist, bevor die Verbindung hergestellt wird
Das Problem
Mein Twitter-streaming-app mit Sockel.io funktioniert okay beim Besuch der Website mit der IP-Adresse und port, aber live-streaming wirft einen Fehler, wenn bei Verwendung der domain-Namen auf der Website. ?
Versuchen die links unten, und öffnen Sie die developer tools, um den Fehler anzuzeigen,
Besuch der Website mit dem domain-Namen (http://sentiment-sweep.com)
Hunderte von socket Fehler folgenden format:
WebSocket connection to
'ws://sentiment-sweep.com/socket.io/?EIO=3&transport=websocket&sid=guBmeCqsOr22CTsWAAC0'
failed: WebSocket is closed before the connection is established.
Besuch der Website mit IP und Port (http://109.73.175.183:3003)
Zunächst ein paar der oben genannten socket-Fehler, aber dann affter 10-15 Sekunden die app beginnt zu funktionieren
Hintergrund
Ich habe diesen Knoten app für ein Uni-Projekt einige Jahre zurück. Ich halten Sie es aktualisiert. Es nutzt Socket.io und die Twitter-API zum streamen von live-Tweets, berechnen Sie die Stimmung und zeigt die Ergebnisse optisch mit D3. Ich nutze NGINX für port-forwarding.
Referenz, hier ist mein git-repo: https://github.com/Lissy93/twitter-sentiment-visualisation
Kürzlich machte ich eine kleine HTML/CSS ändern, aktualisiert und ein paar Abhängigkeiten, und das ist, wenn diese seltsame Buchse.io-Problem begann
, Was ich bisher ausprobiert habe
- Der port geändert - kein Unterschied
- Ich benutze
io.connect();
ohne params, um eine Verbindung - Inklusive sockel.io lokal, eher als von CDN
- Könnte es etwas mit meiner Website nicht-SSL -
- Lokal funktioniert es völlig in Ordnung, und schneller und mit weniger Verzögerung, als die API-version
Hat jemand gesehen ein Problem, ähnlich wie dies vor?
Irgendwelche Vorschläge, Kommentare oder Antworten, wäre sehr dankbar - vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung gefunden, und es war in der Tat einfach! Veröffentlichung der Antwort hier, um zu helfen, andere vor einem ähnlichen Problem, denn ich war Total fest auf das seit 2 Tagen!
Mein Problem wurde verursacht durch eine Abhängigkeit update.
- Buchse.io V 2.0.0 ist nicht rückwärts kompatibel.
Laut den release notes:
Den neuen (V 2.0.0) major release bringt einige performance-Verbesserungen, aber auch schlich sich unten in den release notes war:
Hier ist die V2 release notes: https://github.com/socketio/socket.io/releases/tag/2.0.0
Die Lösung ist die Verwendung von HTTPS
Machen Sie Ihre app https, oder signieren Sie Ihre eigenen Wünsche, wie pro-Dokumentation. Als schnellen fix obwohl ich nur herabgestuft-Buchse.io V 1.7.0 und es funktioniert perfekt ?
const domain = "localhost";
const port = 8080;
const io = require('socket.io');
const server = http.createServer();
server.listen(port, domain);
const socket = io.listen(server);
(Code-snippets in die Kommentare anzeigen nicht so gut), Aber ich hoffe, dass hilft dir 🙂