Javascript:Phoenix频道立即进入错误状态

Javascript: Phoenix channel immediately enters errored state

本文关键字:错误 状态 Phoenix 频道 Javascript      更新时间:2023-09-26

在我的网络应用程序中,我使用Javascript连接到Phoenix频道。

  this._channel = socket.channel("user:" + username, {password: password})
  this._channel.join()
  .receive("ok", this._handleLoginSuccess.bind(this))
  .receive("error", this._handleLoginFailure.bind(this))
  .after(10000, () => console.log("Networking issue. Still waiting..."))

服务器成功地处理了join,并且正确地调用了_handleLoginSuccess回调。但是,当启动JS调试器并查看this._channel时,一旦调用回调,它就已经处于"错误"状态,我也无法向它推送任何消息。然而,我也看到joinedOnce被设置为true,所以那里一定出了很大的问题。

由于服务器端没有报告任何错误,我想知道发生了什么。有什么想法吗?

我发现了这个问题:它与实时重载机制有关,该机制以某种方式导致websocket一直被终止和重新建立。在通过评论下面的行禁用实时重新加载后,我的常规频道再次正常工作。

#if code_reloading? do
#  socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
#  plug Phoenix.LiveReloader
#  plug Phoenix.CodeReloader
#end