【问题标题】:Listening for 2 Pusher apps in same page using Javascript使用 Javascript 在同一页面中侦听 2 个 Pusher 应用程序
【发布时间】:2013-07-17 19:40:35
【问题描述】:

我已经成功使用 pusher 几个月了。我不会详细介绍解决方案的“推送”部分,因为它已经有效。当我尝试收听第二个应用程序时,我的问题在于听众方面。请注意,我说的是第二个应用,而不是同一个应用上的第二个频道。

这是我至少运行了 6 个月并继续运行良好的内容,直到我尝试在 HEAD 部分的同一 HTML/PHP 页面上添加第二个版本。

出于显而易见的原因,我已将密钥更改为某些信息。

如何在 Pusher 中添加指向第二个应用的 this 的第二个副本?

我担心的是,如果存在诸如通道之类的相同变量之类的东西,我会遇到问题。我已尝试将频道重命名为频道 2 并将推送器重命名为推送器 2,但随后它停止工作..

<!-- Start Pusher Code -->
  <script src="https://d3dy5gmtp8yhk7.cloudfront.net/2.1/pusher.min.js" type="text/javascript"></script>
  <script type="text/javascript">

    var pusher = new Pusher('0000000000');
    var channel = pusher.subscribe('appname');

    channel.bind('channelname', function(data) {

    MyURL = 'http://www.google.com';

    newwindow=window.open(MyURL,data.cuid,'height=800,width=950,scrollbars=yes');

    });
  </script>
  <!-- End Pusher Code -->

【问题讨论】:

    标签: php javascript twilio pusher


    【解决方案1】:

    您可以使用自执行闭包:

    ( function() {
      // some code
    } )();
    

    以确保变量不会发生冲突。另外,请记住使用var 声明变量,否则它们会泄漏到全局范围内。

    如果可能,我将只包含一次 Pusher &lt;script&gt; 标签。

    <script src="https://d3dy5gmtp8yhk7.cloudfront.net/2.1/pusher.min.js"></script>
    <!-- Start Pusher Code -->
    <script>
    ( function() {
      var pusher = new Pusher('app_key_1');
      var channel = pusher.subscribe('appname');
    
      channel.bind('channelname', function(data) {
    
        var MyURL = 'http://www.google.com';
    
        var newwindow=window.open(MyURL,data.cuid,'height=800,width=950,scrollbars=yes');
    
      });
    } )();
    </script>
    <!-- End Pusher Code -->
    
    <!-- Start Pusher Code -->
    <script>
    ( function() {
      var pusher = new Pusher('app_key_2');
      var channel = pusher.subscribe('appname');
    
      channel.bind('channelname', function(data) {
    
        var MyURL = 'http://www.google.com';
    
        var newwindow = window.open(MyURL,data.cuid,'height=800,width=950,scrollbars=yes');
    
      });
    } )();
    </script>
    <!-- End Pusher Code -->
    

    我使用了两个不同的应用程序密钥来确认您正在连接到两个不同的应用程序。

    【讨论】:

    • 好的,我会试一试。我只是担心你提到的冲突。如果您给我的代码可以解决问题并且不会导致对“数据”的引用。搞混等等,这就是我想要完成的。虽然,我不得不说我很好奇为什么我可以重命名“推动者”和“频道”变量。不知何故,这会破坏代码。
    • 顺便说一句,我不确定在两种情况下让变量保持相同实际上会是一个问题,但是......我的大脑告诉我它本来会是一个问题。再次感谢!
    • data 变量只存在于它传递给的函数的范围内。被覆盖的变量很可能没有引起问题 - 最好不要这样做。原因可能是两次包含 Pusher 脚本标签。它可能已经覆盖了引用。我不是 100% 确定,但很高兴上述解决了问题。
    • 只是为了澄清一点.. 如果我重新使用变量,我不能 100% 确定它会被破坏。我只是不想,当我试图改变它们时,事情就坏了。我从来没有真正尝试过马虎,让变量保持不变,这就是我想要建议的原因。一直在学习 :-) 再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-02-17
    • 2010-09-06
    • 2017-02-18
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    相关资源
    最近更新 更多