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

Javascript: Phoenix channel immediately enters errored state

在我的网络应用程序中,我使用 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 时,一旦调用该回调,它就已经处于 "errored" 状态,我也无法向它推送任何消息。但是我也看到 joinedOnce 设置为 true,所以那里确实出了点问题。

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

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

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