Wenn ich mein Node.js-Skript ausführe, kann ich nur mit localhost: 8083 darauf zugreifen, während die Verwendung der IP-Adresse des Geräts von einem anderen Gerät zu einem "Diese Seite kann nicht sei erreicht". Ich bin mit dem folgenden Node.js Server-Skript:Node.js - Socket.io nur über localhost erreichbar
var app = require('express')(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
ent = require('ent'), // Blocks HTML characters (security equivalent to htmlentities in PHP)
fs = require('fs');
// Loading the page index.html
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket, username) {
// When the username is received it’s stored as a session variable and informs the other people
socket.on('new_client', function(username) {
username = ent.encode(username);
socket.username = username;
socket.broadcast.emit('new_client', username);(err) {});
});
// When a message is received, the client’s username is retrieved and sent to the other people
socket.on('message', function (message) {
message = ent.encode(message);
socket.broadcast.emit('message', {username: socket.username, message: message});
});
});
console.log('Chat Socket.io running on port 8083');
server.listen(8083);
Hier ist der Client Skript:
<script src = "http://code.jquery.com/jquery-1.10.1.min.js" > </script>
<script src="/socket.io/socket.io.js "></script>
<script>
// Connecting to socket.io
var socket = io.connect("10.254.17.115:8083");
// The username is requested, sent to the server and displayed in the title
var username = prompt('What\'s your username?');
socket.emit('new_client', username);
document.title = username + ' - ' + document.title;
// When a message is received it's inserted in the page
socket.on('message', function(data) {insertMessage(data.username, data.message)})
// When a new client connects, the information is displayed
socket.on('new_client', function(username) {
$('#chat_zone').prepend(
'<p><audio class="background" autoplay><source src="new-user.mp3" type="audio/wav"></audio><em>' + username + ' has joined the chat!</em></p>');
})
// When the form is sent, the message is sent and displayed on the page
$('#chat_form').submit(function() {
var message = $('#message').val();
socket.emit('message', message); // Sends the message to the others
insertMessage(username, message); // Also displays the message on our page
$('#message').val('').focus(); // Empties the chat form and puts the focus back on it
return false; // Blocks 'classic' sending of the form
});
// Adds a message to the page
function insertMessage(username, message) {
$('#chat_zone').prepend('<p><strong>' + username + '</strong> ' + message + '</p>');
}
</script>
Edit: Überarbeitete Häfen, aber sie waren nicht das Problem. Als ich die var socket = io.connect
zu io()
änderte, funktionierte es.
Ist die Maschine auf diesem Port die Socket.IO Server erlauben, eingehende Verbindungen laufen? Vielleicht blockiert die Firewall diese Anfragen. – arthurakay
Warten Sie, warum versucht Ihr Clientskript, eine Verbindung mit Port 8081 herzustellen, wenn der Server unter 8083 ausgeführt wird? – arthurakay
'' mit Leerzeichen? –