PHP Pusher事件触发不起作用

Posted

技术标签:

【中文标题】PHP Pusher事件触发不起作用【英文标题】:PHP Pusher Event Triggering not working 【发布时间】:2016-06-19 13:44:16 【问题描述】:

我是 WebSockets 的新手,最近遇到了Pusher。我想将它集成到我的网站中。我正在尝试通过 Pusher.php 文件触发事件,这是我的代码:

$pusherArray['success'] = true;
        $pusher = new Pusher( $PUSHER_APP_KEY, $PUSHER_APP_SECRET, $PUSHER_APP_ID );
        class MyLogger 
          public function log( $msg ) 
            print_r( $msg . "\n" );
          
        

        $pusher->set_logger( new MyLogger() );
        $pusher->trigger('8307851079', 'logout', $pusherArray);
        $info = $pusher->get_channel_info("$clef_id");
        $channel_occupied = $info->occupied;
        var_dump($channel_occupied); 

然后这是我得到的结果:

Pusher: curl_init( http://api.pusherapp.com:80/apps/217851/events?auth_key=MY_KEY&auth_signature=SIGNATURE&auth_timestamp=1466342695&auth_version=1.0&body_md5=41b74623d1e5f479b466093805ff36de )
Pusher: trigger POST: "name":"logout","data":"\"success\":true","channels":8307851079
Pusher: exec_curl response: Array
(
    [body] => Expected channels parameter to be an array

    [status] => 400
)

Pusher: curl_init( http://api.pusherapp.com:80/apps/217851/channels/8307851079?auth_key=MY_KEY&auth_signature=SIGNATURE&auth_timestamp=1466342696&auth_version=1.0 )
Pusher: exec_curl response: Array
(
    [body] => 404 NOT FOUND

    [status] => 404
)

NULL

事件没有被触发!需要帮助!

【问题讨论】:

你检查phpdoc了吗?给触发方法的第一个参数应该是一个数组。您正在传递一个字符串。 @RobApodace 不是 $info = $pusher->get_channel_info("$clef_id");,但触发器本身不起作用! @RobApodaca 我试过了,触发器返回状态码 200!但在那之后我仍然得到 404 Not found 错误!而且我仍然无法在 Pusher 调试控制台日志中看到我的事件。而所有连接和通道都显示了! 我几天前提供了一个答案,见***.com/questions/37851532/pusher-not-working-in-php/…。 谢谢。我让它工作了!有什么办法可以结束这个问题吗? 【参考方案1】:

我最终让它工作了。发生的事情是查看通道信息方法导致了错误。我没有正确的语法。

正如Rob 所指出的,触发器函数的第一个参数要求它是一个数组。我改变了它并让脚本工作。这是简短的代码:

    $pusherArray['success'] = true; 
$pusher = new Pusher( $PUSHER_APP_KEY, $PUSHER_APP_SECRET, $PUSHER_APP_ID );
class MyLogger  public function log( $msg )  print_r( $msg . "\n" );   
$pusher->set_logger( new MyLogger() ); 
$pusher->trigger(['8307851079'], 'logout', $pusherArray);

我只是简单地删除了查看频道信息,因为我并不真正需要该功能。得到 200 OK 状态码,我的脚本能够传递

“成功”:真

向 Pusher 服务发送消息。

【讨论】:

以上是关于PHP Pusher事件触发不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Jquery按钮单击事件不起作用

Ionic2,LocalNotification 插件,触发事件不起作用

由工作表更改事件触发的复制粘贴值不起作用

当下个月按钮单击完整日历时触发事件不起作用

jquery触发a标签的点击事件不起作用

HtmlUnit click() 事件不起作用并在 Java 中触发 ClassCastException