Ionic 4聊天应用程序以及如何向特定用户发送消息?

时间:2019-04-17 09:18:08

标签: node.js ionic-framework redis socket.io lumen

我在Ionic 4中创建了应用程序,对于后端,我使用Lumen。应用程序应该具有聊天页面,为此,我添加了Redis,Socket.io和nodejs。我成功创建了公共会议室,并且该会议室中的用户之间可以进行聊天。问题是如何向用户发送私人消息,如何初始化用户的私人房间。

这是我创建公共房间的方式:

constructor(private socket: Socket) {

        this.getMessages().subscribe(message => {
            this.messages.push(message);
        });

    }

    getMessages() {
        const observable = new Observable(observer => {
            this.socket.on('message', (data) => {
                observer.next(data);
            });
        });
        return observable;
    }

我从Lumen应用程序和Redis发送消息:

public function sendMessage()
{
    $redis = Redis::Connection();
    $sendMessage = json_encode(['user' => 'John Doe', 'text' => 'Some message, text', 'channel' => 'message']);
    $redis->publish('add-message', $sendMessage);
}

我的节点服务器是:

let express = require('express');
let app = express();
let http = require('http').Server(app);
let redis = require('redis');
let client = redis.createClient("redis://127.0.0.1:6379");

let io = require('socket.io')(http);

app.use('/', express.static('www'));

http.listen(3000, '192.168.10.10', function(){
    console.log('listening on *:3000');
});

client.on('message', function(chan, msg) {
    let data = JSON.parse(msg);
    io.sockets.emit(data.channel, msg);
});

client.subscribe('add-message');

最重要的是,在“消息”频道上订阅的每个人都会收到消息。问题是我来到聊天页面时在频道上订阅了用户。我不知道如何订阅用户,以及何时在其他用户向其发送消息的频道上。同样,该发送者用户如何创建新房间,我想使用用户ID作为房间名称(每个实例user1_user2)。 / p>

有人知道我可以解决这个问题吗?我什至不了解我的描述。

预先感谢

0 个答案:

没有答案