2016-11-16 6 views
1


Ich bin neu bei Node.js und ich versuche, eine einfache Chat-Anwendung abzuschließen.
Aber ich bin stecken. Ich habe versucht, Google und andere Lösungen zu verwenden, aber ich finde es funktioniert aus irgendeinem Grund nicht. Wenn mir jemand helfen kann, wird das großartig.Socket.IO arbeitet lokal, aber nicht exertional

Der Fehler im Ergebnis ist, dass es zu lange dauerte, um zu reagieren.
Hier ist mein Code.

Seite Server:

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

//##### PUSH HTML FILE 
app.get('/', function(req, res){ 
    res.sendFile(__dirname +'/index.html'); 
}); 

//##### START SERVER 
http.listen(3000, '0.0.0.0', function(){ 
    console.log('started on port: 3000'); 
}); 

//##### USER CONNECTED 
io.on('connection', function(socket){ 
    console.log('A User Connected'); 

//##### LOG MESSAGE 
socket.on('chat message', function(msg){ 
    console.log(msg); 
    io.emit('chat message', msg); 
}); 

//##### LOG USERNAME 
socket.on('set username', function(username){ 
    console.log('NEW USER: ' + username + ' has been set!'); 
    io.emit('set username', username); 
}); 

//#####USER DISCONNECTED 
socket.on('disconnect', function(){ 
    console.log('A user disconnected'); 
    }); 
}); 

Client-Seite:

<script src="/socket.io/socket.io.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script> 
    <script> 
     var socket = io(); 

     //##### SET USERNAME 
     $('#set_username').submit(function(){ 
      socket.emit('set username', $('#username').val()); 
      return false; 
     }); 

     //##### SET MESSAGE 
     $('#sendmsg').submit(function(){ 
     var msg = '['+$('#username').val()+'] ' + $('#m').val(); 

      socket.emit('chat message', msg); 
      $('#m').val(''); 
      return false; 
     }); 

     //SET MESSAGE 
     socket.on('chat message', function(msg){ 
      $('#messages').append($('<li>').text(msg)); 
     }); 
    </script> 

Vielen Dank im Voraus!

+0

Wo geben Sie den Server an, mit dem im Client eine Verbindung hergestellt werden soll? –

+0

Sie sind hinter einem NAT. – Turrican

+0

Nur ein Schuss in die Dunkelheit hier, ich habe das Gefühl, Port 3000 auf Ihrem Server ist hinter einer Firewall, oder wie @Turrican sagen, müssen Sie möglicherweise eine NAT auf Ihrem Router einrichten .. Der Punkt TCP/IP hat keine Unterscheidung zwischen localhost (127.0.0.1) oder einer anderen IP. Und Sie hören auf allen Schnittstellen 0.0.0.0, also ist es nicht Ihre Knoten-Apps, die das Problem ist. – Keith

Antwort

2

Schauen Sie sich die Kommentare:

Sie sind an Port 3000 hinter einem NAT hören. Wenn Sie eine Verbindung von außen herstellen möchten, müssen Sie die Portweiterleitung in Ihrem Router zu Ihrem lokalen Server konfigurieren. Sie haben einen Tippfehler in Ihrer NAT-Regel.

Verwandte Themen