我想创建一个类似whatsapp的Messenger应用, 1.首先,我需要列出连接到我的Messenger应用程序的人员列表。 2.我想向列表中存在的人发送消息,因此我在列表上单击其名称。 3.现在我想和他聊天。
在这里,我不想将消息广播给所有人。
所以请告诉我最好的安全方式。
我已经做了一些类似下面的代码。 我只是在两个人之间建立了一个房间 这很好。 但是问题是两个人第一次同时单击彼此去发送消息时,创建了两个不同的房间。 如果他们在不同时间第一次从列表中单击彼此,则效果很好。
(async()=> {
try {
const r1 = await AsyncStorage.getItem(userphone + "u-uuuuuuuu-u" + mynumber);
const r2 = await AsyncStorage.getItem(mynumber + "u-uuuuuuuu-u" + userphone);
if (r1 !== null || r2 !== null) {
if (r1 !== null) {
this.socket.emit("joiningroom", { room: r1 });
if (this._isMounted) {
this.setState({ room: r1 });
}
} else {
this.socket.emit("joiningroom", { room: r2 });
if (this._isMounted) {
this.setState({ room: r2 });
}
}
} else {
var ref1 = db.collection('chatrooms').doc(userphone + "u-uuuuuuuu-u" + mynumber);
var ref2 = db.collection('chatrooms').doc(mynumber + "u-uuuuuuuu-u" + userphone);
const doc1 = await ref1.get();
const doc2 = await ref2.get();
if (doc1.exists || doc2.exists) {
if (doc1.exists) {
const room = doc1.data().mbaliotaq;
this.socket.emit("joiningroom", { room });
if (this._isMounted) {
this.setState({ room });
}
await AsyncStorage.setItem(userphone + "u-uuuuuuuu-u" + mynumber, room);
} else {
const room = doc2.data().mbaliotaq;
this.socket.emit("joiningroom", { room });
if (this._isMounted) {
this.setState({ room });
}
await AsyncStorage.setItem(mynumber + "u-uuuuuuuu-u" + userphone, room);
}
} else {
const id = userphone + "u-uuuuuuuu-u" + mynumber;
const room = "mmm" + userphone + "r-rrrrrrrrr-r" + mynumber + "mmm";
db.collection('chatrooms').doc(id).set({
mbaliotaq: room
}).then(() => {
this.socket.emit("joiningroom", { room });
if (this._isMounted) {
this.setState({ room });
}
}).catch(err => {
console.log(err);
});
}
}
} catch (e) {
console.log(`Error in async ${e}`);
}
})();
我需要比解决方案更好的方法和安全的方法。
答案 0 :(得分:0)
不是创建聊天室,而是创建创建消息对象,该对象将具有messageId,sendererId,receiverId,时间,文本等...
并在后端检查中根据usersId发送消息