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!
Wo geben Sie den Server an, mit dem im Client eine Verbindung hergestellt werden soll? –
Sie sind hinter einem NAT. – Turrican
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