Wenn kein Raum angegeben ist, wird der Client die Nachricht erhalten, aber wenn ein Raum angegeben wird, kann ich keine Nachricht auf dem Client empfangen.socket.io Client empfängt keine Nachricht
server.js
var socket = require('socket.io');
var mysql = require('mysql');
const path = require('path');
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = socket.listen(server);
var port = PORT;
io.on('connection', (socket) => {
console.log('new connection made');
socket.on('subscribe', function (room) {
socket.room = room;
socket.join(socket.room, function() {
console.log('joined:' + room); // outputs joined: 1
socket.on('send-message', (data) => {
io.to(data.room).emit('message-received', data.message);
console.log("sent to room:" + data.room); // outputs sent to room: 1
});
});
});
});
server.listen(port, function() {
console.log('Server listening at port %d', port);
});
Client.js
this.socket = io.connect('ws://IP:PORT');
this.socket.on('connect',() => {
console.log("connection made"); // it output connection made in console
this.socket.emit('subscribe', 1);
});
this.socket.on('message-received', (message: any) => {
console.log(message);
});
auf server.js habe ich unter mehreren Optionen ausprobiert, aber noch nicht die Botschaft aufgenommen "auf Client-Seite zu emittieren:
// io.emit('message-received', data);
// io.to(data.room).emit('message-received', {
// room: data.room,
// message: data.message
// });
// io.sockets.in(data.room).emit('message-received', {
// room: data.room,
// message: data.message
// });
//io.broadcast.to(data.room).emit('message-received', data.message);
mit der neuesten socket.io-Bibliothek mit eckigen 4