ich einen Knoten js Website mit Vorlage js azur Knoten erstellt haben die App verwendet Express- und Buchse ioWeb Azure Knoten js
Dies ist der Server-Code ich für jede Funktion eine einfache Server-seitigen Code mit Protokolle geschrieben haben
mein Server-Side-Code ist:
var express = require('express');
var app = express();
////Creating Server
var server = require('http').createServer(app);
//For Socket IO
var io = require('socket.io').listen(server);
var port = process.env.port || 1337
server.listen(port);
var connections = [];
console.log('Server Running....');
io.sockets.on('connection', function (socket) {
connections.push(socket);
console.log('Connected: %s sockets connected', connections.length);
socket.on('subscribe', function (room) {
//It's not logging this
console.log('Connections: ', connections.length, ' Room: ', room);
socket.join(room);
});
socket.on('disconnect', function (data) {
connections.splice(connections.indexOf(socket), 1);
console.log('Disconnected: %s sockets still connected', connections.length);
});
socket.on('send message', function (data) {
console.log('Message.', data.message);
//this works fine when i comment the 'subscribe' function
io.sockets.emit('new message', { msg: data.message, room: data.room});
//I want this to work
io.sockets.in(data.room).emit('new message', { msg: data.message, room: data.room });
});
});
});
Vom Client ich auf die Website verbinden und eine emit verwenden, um den bestimmten Raum zu verbinden
Side-Code Auftraggeber:
//Inside document.ready i am calling this
var socket = io.connect('http://example.azurewebsites.net'); //url
socket.emit('subscribe', 1);//Hardcoded
$('#send').click(function (e) { // Send Button
socket.emit('send message', {
room: 1,
message: $('#message').val() // Input Box Value
});
});
socket.on('new message', function (data) {
console.log('Message :',data.message,'Room :',data.room);
});
Das Problem, das ich bin vor ist die 'subscribe' -Funktion nicht funktioniert, bekommen ich keine Protokolle für sie.
Was könnte der Grund sein
Rufen Sie 'socket.emit ('abonnieren')' sofort auf dem Client oder nachdem Sie verbunden sind? Wenn Sie sagen "Nachricht senden" und "neue Nachricht" funktionieren gut, können Sie klären. Im Beispiel werden sie ausgelöst, wenn sie diese Nachricht vom Server erhalten, aber im Serverbeispiel wird vom Client eine Nachricht gesendet. Außerdem haben Sie im 'emit'-Aufruf von' new message' ein extra ',' am Ende Ihres Datenobjekts, was wahrscheinlich der Grund ist, warum der nächste Anruf nicht funktioniert. – divillysausages
ja, ich rufe sofort 'subscribe' an auf der Client-Seite. Die Nachricht senden Ich habe ein Eingabefeld und eine Schaltfläche zu senden, die bei Klick sendet die Nachricht und die console.log auf der Serverseite protokolliert die Nachricht und die, änderte ich aber immer noch die io.sockets.in [ Zimmer] funktioniert nicht, weil die Abonnement-Funktion scheint nicht zu funktionieren –
Ich bekomme ein Protokoll für die Verbindung, ein Protokoll, wenn ich eine Nachricht sende, und die neue Nachricht ab sofort nur auf der Client-Seite anmelden Wetter die Nachricht zu sehen kommt zurück –