0

データベースを更新したときにサーバーからクライアントに通知をプッシュしたい。
これは私のコントローラーです:

public function finish() {
    $this->autoRender = false;
    try {
        if($this->request->is('post')) {          
            $db = $this->ClientCabaInfo->getDataSource();
            if($this->Session->check('client_check_data')) {
                $data = $this->Session->read('client_check_data');
                ...
                if($this->CabaInfo->save()) {
                    $this->webNotify();
                }
            }

            $this->redirect('index');
        }

    } catch (Exception $e) {
        $this->EasyLog->log(Conf::r("APP.LOG.APP_FILE"),$e->getMessage(),Conf::r("COM.LOG.FORMAT_ERROR"),'NASUCT');
        $this->redirect("/errors/");
    }

}
public function webNotify() {
    header('Content-Type: text/event-stream');
    header('Cache-Control: no-cache');

    $time = date('r');
    echo "data: {$time}";
    flush();

}

そして私の見解では、私は次のように呼びました:

if(typeof(EventSource)!=="undefined")
  {

  var source=new EventSource("<?php echo $this->Html->url('/client_caba/finish'); ?>");
  source.onmessage=function(event)
    {
        notifyMe(event.data);
    };
  }
else
  {
  document.getElementById("result").innerHTML="Sorry, your browser does not support server-sent events...";
  }

しかし、ページにアクセスするhttp://localhost:8080/admin/client_caba/finish
と、ダイアログが表示され、アクションが終了しません... ここに画像の説明を入力

どこが間違っていますか?そして、この問題を解決し、パラメータをポップアップ通知に渡す方法を教えてください...ありがとう

4

1 に答える 1

0

どのブラウザを使用していますか? 投稿したダイアログが表示されている場合は、すべてが正常に機能しており、実際にサーバーから応答を受け取っていることを意味します。私には、ブラウザの問題のようです。Chrome などの最新のブラウザー バージョンでは、デスクトップ通知を表示するための明示的なアクセス許可が必要です。コードを chrome で試してみて、サイトからの通知を表示する許可を求める小さなポップアップ通知を確認してください。それを許可すると、問題なく動作するはずです。問題がある場合は、notifyMe() 関数のコードを共有してください。矛盾がある可能性があります。

于 2014-10-02T04:26:12.787 に答える