typescript unsubscribed(Action Cable)不会在调用时执行

ovfsdjhp  于 2023-05-08  发布在  TypeScript
关注(0)|答案(1)|浏览(85)

所以我正在建立一个聊天,在聊天的页面,有这样的代码:

useEffect(() => {
    return () => {
      chatChannel?.unsubscribe();
    };
  }, []);

在后台调用此代码

def unsubscribed
    ConnectedList.remove({id: connection.user.id, channel: stream_channel})
    stop_stream_for stream_channel
  end

它的工作原理,但不是在正确的时间,我的意思是后端不会立即取消订阅的用户从频道作为征求,这将需要很长的时间,因为执行了大量的取消订阅征求在一起。
有人能帮帮我吗

11dmarpk

11dmarpk1#

我找到了解决方案:
我试图在函数中进行订阅,然后在useEffect中调用它,这时我应该这样做:

useEffect(() => {
    const chatChannel = cable?.subscriptions?.create(
      {
        channel: 'TransferMessagesChannel',
        room: transfer?.id as number,
      },
      {
        received(message: TransferMessage) {
          handleReceivedMessage(message);
        },
      }
    );

    setChatChannel(chatChannel);

    return () => {
      chatChannel?.unsubscribe();
    };
  }, []);

相关问题