2017-11-24 20 views
0

Here is the problem. When I load the page in the browser and check to see if my "test" was emitted, I run into this wall of spamming polling.Wie kann ich socketio spamming polling reparieren, wenn ich meine Web App starte? [Javascript, Express.js, socketio]

Der Code ich verwende, ist genau die gleiche wie in anderen Projekten, die ich getan habe, so macht es keinen Sinn für mich, dass dies jetzt nicht funktioniert. -_-

app.js

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io')(server); 
var port = process.env.PORT || 8000; 

server.listen(port, function(){ 
    console.log('server ready - listening on *:8000'); 
}); 

app.get('/*' , function(req, res, next) { 
    //This is the current file they have requested 
    var file = req.params[0]; 
    //Send the requesting client the file. 
    res.sendFile(__dirname + '/' + file); 
}); 

io.on('connection', function (socket) { 
    socket.on('test', function(){ 
     console.log("test worked"); 
    }); 
}); 

Client.js

var socket = io(); 
socket.emit("test"); 

brach ich den Code auf, was Sie oben sehen. Es gibt nichts anderes. Und es funktioniert nicht. intern schreiend

+0

In welchem ​​Browser läuft das? Und sind Sie 100% sicher, dass Sie dieselbe Version von socket.io auf dem Client und dem Server ausführen? Wenn Sie '' im Client verwenden, lädt es den Client immer direkt vom Server, um sicherzustellen, dass sie die gleiche Version haben. Es scheint, als ob Ihr Client-Code denkt, dass er nie erfolgreich eine Verbindung herstellt. – jfriend00

+0

Omg das war es, denke ich. Ich benutzte * beide * den Skriptlink und seit einiger Zeit ohne Probleme. Jetzt, wo ich das cdn.socket-Skript "kommentiert" habe (im Prinzip entfernt), hat es einfach funktioniert! Yessss danke dir für deine schönen Augen, die schauen, wo ich nicht konnte. <3 –

Antwort

0

Ich werde meinen Kommentar als Antwort posten, damit Sie diese Frage abschließen können. Ein häufiger Grund dafür, dass socket.io mit HTTP-Anfragen eine Schleife bildet und niemals erfolgreich eine Verbindung herstellt, ist, wenn Sie auf dem Client und dem Server eine nicht übereinstimmende Version ausführen. Dies scheint kürzlich bei socket.io nach einer letzten Versionsänderung geschehen zu sein, so dass sie einige Änderungen in der Funktionsweise der Verbindungslogik vorgenommen haben müssen, die dazu führen, dass die Verbindung fehlschlägt, wenn die Versionen nicht übereinstimmen.

Wenn Sie Ihren Kunden über diese laden:

<script src="/socket.io/socket.io.js"></script> 

der Kunde wird dann immer die Server-Version übereinstimmen, solange Sie eine andere Version der Steckdose geladen werden keine anderen <script>-Tags haben, die. io.

Verwandte Themen