【问题标题】:Pusherapp/Websocket not connectingPusherapp/Websocket 未连接
【发布时间】:2011-08-16 01:17:40
【问题描述】:

我在这里尝试使用 pusherapp,但 chromium 的控制台只是给了我“WebSocket 在建立连接之前已关闭”。我的 JS 在下面,关于可能是什么问题的任何想法?

<script type='text/javascript'>
   $(document).ready(function(){
   var pusher_key = "<%= Pusher.key %>";
   var pusher_channel = "thirsty-<%= Rails.env %>";
   var pusher = new Pusher(pusher_key, pusher_channel);
   pusher.bind('push_comment', function(content) {
     comment_html = '<li><p>' + content + '</p></li>'
     $(comment_html).prependTo('#comments');
   });
});  
</script>

【问题讨论】:

  • console.log 时“pusher_key”和“pusher_channel”的属性是否正确?
  • 是的,它们都显示了正确的值

标签: websocket


【解决方案1】:

问题是询问以下错误的原因:

WebSocket 在连接建立之前关闭。

这实际上是一个通用的 WebSocket 错误,当在连接建立之前尝试关闭 WebSocket 连接(通过调用webSocketInstance.close())时,浏览器会记录该错误。

错误是由 Pusher JavaScript 库尝试关闭连接触发的,但由不良网络或浏览器条件(例如在线/离线报告)引起。在所有情况下(据我所知),Pusher JavaScript 库都会重试连接,直到这些连接得到解决(例如,互联网连接恢复)。

更多信息和以下答案中的示例:

What does "WebSocket is closed before the connection is established" mean?

上面代码的几点说明:

  • Pusher 构造函数的第一个参数是应用程序密钥。第二个参数是键值选项的映射。因此,您不应该将通道名称作为第二个参数传递。有关Pusher constructor here 的更多信息
  • pusher.bind 调用实际上已被弃用(文档正在更新)。对于通道事件,您应该使用channel.bind 直接在通道上绑定,对于连接事件,您应该在Pusher.connection 对象上绑定。

【讨论】:

  • 遗憾的是,这个答案缺少很多上下文,因此无法使用。
  • @Obie 希望更新可以澄清问题并使答案更有用。
【解决方案2】:
  1. 如果互联网连接太慢或断开连接,可能会发生这种情况。
  2. 交叉检查推送器凭据。
  3. 如果您在推送渠道应用中有集群,请确保将其写入您的代码中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-22
    • 1970-01-01
    • 2012-08-08
    • 2021-10-17
    • 2019-11-25
    • 1970-01-01
    • 2011-04-01
    • 2022-01-12
    相关资源
    最近更新 更多