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
在我的网络应用程序中,我使用 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