Javascript Pubnub多次发送消息

Javascript Pubnub多次发送消息,javascript,reactjs,pubnub,Javascript,Reactjs,Pubnub,我正在使用ReactJs构建一个带有pubnub的聊天应用程序。问题是我的第一封邮件发送了1次,第二封邮件发送了两次,第三封邮件发送了3次。可能有什么问题,这是我的代码。我需要在某个时候取消订阅吗?消息不仅显示多次,而且实际上已发送 class App extends Component { constructor(props) { super(props); this.pubnub = new PubNub({ publishKe

我正在使用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;

我相信这不是出版的复制品。 我认为你正在一次又一次地“订阅”同一频道。。。在“一次又一次”发布时,每次新订阅都会收到发布到该频道的所有消息(如历史记录)

所以,
1st publish->subscribe->1条消息
第二次发布->订阅->2条消息
第三次发布->订阅->3条消息
等等

  • 您的PubNub init应该是全局的和/或更好地管理订阅/发布调用
  • 请使用UUID并将其设置为静态值
  • 最好的,
    Avi.

    更新1。您正在为每个sendMessage()添加侦听器这是错误的,您只需在sendMessage范围之外添加一次侦听器。2.订阅您应该只订阅一次,而不是每次sendMessage()调用都订阅。祝你好运,阿维