2017-07-28 13 views
1

ルームが指定されていない場合、クライアントはメッセージを受信しますが、ルームを指定するとクライアントでメッセージを受信できません。socket.ioクライアントがメッセージを受信して​​いません

を:私は「メッセージ受信のクライアント側を発することができない、まだ下にいくつかのオプションを試してみましたが、しているserver.jsに

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); 
}); 

// 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); 

角度4の最新socket.ioライブラリを使用

答えて

1

あなたのクライアントサイドとserverSideコードに表示されている内容に基づいて、私は問題がclientSideコードにあると考えています...

サーバーは、「subscribe」イベントの中で、あなたはクライアント側から出ることは決してありません!あなたは、パラメータとしてデータとイベント(これはメッセージを含める必要があります)「メッセージを送る」発する場合

したがって、唯一のサーバは、このことができます。..クライアントに

HOPE「を、メッセージ受信」イベントを発するだろう!

関連する問題