我正在使用ReactJs与pubnub一起构建聊天应用程序。问题是我的第一条消息发送1次,第二次发送两次,第三次发送3次。可能有什么问题,这是我的代码。我需要在某些时候取消订阅吗?消息不是多次显示,而是实际发送。
class App extends Component {
constructor(props) {
super(props);
this.pubnub = new PubNub({
publishKey: 'demo',
subscribeKey: 'demo',
});
this.sendMessage = this.sendMessage.bind(this);
}
sendMessage() {
this.pubnub.publish({
channel: "simple-chat",
message: {
text: this.state.currentMesage,
sender: this.pubnub.getUUID()
}
});
this.setState({
currentMesage: ''
});
this.pubnub.subscribe({
channels: ['simple-chat'],
withPresence: true
});
this.pubnub.addListener({
message: (evt) => {
console.log('you have got a message:' + JSON.stringify(evt));
this.state.messages.push({
text: evt.message.text
})
this.setState({
messages: this.state.messages
});
}
});
}
export default App;
答案 0 :(得分:1)
我认为这不是发布的重复。 我认为你正在重新订阅'一遍又一遍地对同一频道......一次又一次地发布'所以每次新订阅都会收到发布到该频道的所有消息(如历史记录)
所以,
1st publish->subscribe-> 1 message
2nd publish->subscribe-> 2 messages
3rd publish->subscribe-> 3 messages
等等...
最佳, 阿维。