問題タブ [phpwebsocket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
514 参照

php - Google Chrome の現在の Websocket プロトコル用の PHP サーバー

WebSocket に Google Chrome 18 を使用するプロトコルはどれですか?

このプロトコルには PHP サーバーが必要です。私はすでに nicokaiser の php-websocket や georgenava の phpwebsocket のようなプロジェクトを試しました。しかし、同じエラーが2回発生しました(デモを試しました):

0 投票する
3 に答える
20239 参照

google-chrome - Chrome 17 に「Sec-WebSocket-Accept」ヘッダーがありません

編集: 私はこの phpwebsocket を試しました: http://www.wilky.it/Shared/phpwebsocket.zipと Firefox で動作しますが、私の質問はまだ残っています: Chrome 17 で websocket を php サーバーで動作させるにはどうすればよいですか?


ここのチュートリアルに従っています: http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

クライアントが接続したように見え、すぐに切断されます。コンソールで次のエラーに気付きました。

WebSocket ハンドシェイク中のエラー: 'Sec-WebSocket-Accept' ヘッダーがありません

php_sockets拡張機能を有効にして、WAMPローカルホストのChrome 17.0.963.56で試しています。

Chrome がサポートするものを変更したという言及をどこかで見ましたが、それを修正する方法について詳しく説明していませんでした。誰かがそれを乗り越えてくれることを望んでいました。(私はウェブソケットが初めてです)。

サーバ:

{パス}>php startDaemon.php

2012-02-20 07:02:51 システム: ソケット リソース ID #7 が作成されました。

2012-02-20 07:02:51 システム: localhost:8000 にバインドされたソケット。

2012-02-20 07:02:51 システム: ソケットでリッスンを開始します。

2012-02-20 07:03:01 WebSocket: リソース ID #8 が接続されました!

2012-02-20 07:03:01 WebSocket: ハンドシェイクをリクエストしています…</p>

2012-02-20 07:03:01 WebSocket: ハンドシェーク…</p>

2012-02-20 07:03:01 WebSocket: ハンドシェイクが完了しました…</p>

2012-02-20 07:03:01 WebSocket: リソース ID #8 が切断されました!

クライアント:

ソケットの状態: 0

ソケットの状態: 3 (クローズ)

0 投票する
1 に答える
5077 参照

html - PHP 共有ホスティングの WebSocket

私は、継続的な ajax ポーリングを回避しようとして、2 番目に更新される「オンライン ユーザー」カウンターを表示する最良の方法についていくつかの調査を行ってきました。

明らかに、WebSockets が最良の選択肢のようです。これはイントラネットなので、互換性の問題がないように、Chrome または Safari を使用する必要があります。

私は WebSockets に慣れていないので、WebSockets に関するいくつかの記事を読んでいて、それがどのように機能するかをかなり理解していると思います。

私がよくわからないのは、PHPでそれを実装する方法です。Node.js は「常に実行されている」という性質があるため、これには自然な選択のように見えますが、それはオプションではありません。

私が最も混乱しているのは、PHP が実行され、完了すると終了するという事実です。PHP が終了した場合、ソケット接続は失われませんか? または、php が再実行された場合、IP でユーザーを調べますか? (その可能性は低いと思います)

次に、このライブラリ http://code.google.com/p/phpwebsocket/を見つけまし たが、少し古いようです (Chrome nightly のみが WebSocket と互換性があると記載されています)。

ある時点で、「コマンドラインから、server.php プログラムを実行してソケット接続をリッスンします」と書かれています。つまり、多くの共有ホスティング プランにはない SSH が必要です。

そして、私のもう1つの疑問は、そのライブラリのソースにある次の行です。

それはphpファイルが継続的に実行されるということですか?それは共有ホスティングで許可されていますか? 私が知っていることから、すべてのホスティングは 1 o2 分のタイムアウト後に php を強制終了します。

オンライン ユーザーの mysql テーブルがあり、PHP を使用して、ログインしているユーザーの数をそれらのオンライン ユーザーに Websocket 経由でブロードキャストしたいと考えています。誰かが私を助けてくれるか、これを達成するためのより良い情報をどこかに教えてもらえますか?

ありがとう

0 投票する
1 に答える
2934 参照

php - PHP サーバーと WebSocket

Websockets を使用して PHP ソケット サーバーに接続したいと考えています。このサーバーは、データベースで何かが変更されたかどうかを一定の間隔でチェックし、変更をクライアントに送り返す必要があります。したがって、クライアントが接続されている場合、クライアント (この場合は Web ブラウザー) がページ上にある限り、接続は開いたままにする必要があります。

次に、サーバーは一定の間隔でデータベースをチェックし、必要に応じてデータを送り返す必要があります。問題が Websocket ではないことはわかっています (すべての主要なブラウザーがまだ Websocket をサポートしているわけではないことを除いて)。主に私の関心事はPHPです。PHP でサーバーを作成したいのですが、必要なだけ PHP コードへの接続を開いたままにしておくことはできますか?

また、間隔はどうですか。通常、C#.NET exe アプリケーションでは、タイマーを作成するだけです。これはPHPでどのように行うことができますか??

これがすべて可能である場合、PHP コードを Apache Web サーバーで単純に実行できますか?

0 投票する
0 に答える
569 参照

php - PHPWebsocketサーバーに接続できません

phpwebsocketを使用してPHPWebSocketサーバーをセットアップしようとしています。私が行ったことはすべて、phpwebsocketファイルごとに正確に行われます(サーバーをローカルホストに変更してポートを調整することを除いて)。私はApache2.2とPHP5.2.17を搭載したWindows7でこれを行おうとしています。また、Webで見つけた他のいくつかの例も試しました。

私が試したさまざまな設定のすべてで、Firefoxをソケットに接続させることができませんでした。また、Telnetを使用して接続しようとしましたが、うまくいきませんでした。何をしようとしても同じ結果が得られるので、足りないステップが必要だと感じています。また、結果を変更しないWindowsファイアウォールを無効にしました。

この設定で接続を確立できない原因について何か考えはありますか?

0 投票する
1 に答える
964 参照

html - HTML5 Websocket スクリプトは Ubuntu で動作し、Win7 または WinXP では動作しません

Win7 マシンにlemmingzshadow / php-websocketをインストールしましたが、これは非常に簡単でした。

  1. コンテンツを htdocs フォルダーに解凍しました。
  2. コマンドラインからserver.phpを実行しました。
  3. Websockets をサポートするブラウザーからファイル /client/status.html を要求しました。

これが、Google Chrome 19 / Windows 7 を実行しているローカル マシンで取得したものです。

Win7 拡大するにはクリックしてください

30秒間「接続済み」と表示され(サーバーからの情報は表示されません)、「切断済み」と表示されます。関連するコマンドライン出力は次のとおりです。

コマンド ライン レポート

Firefox 12 / WinXP を使用している別のコンピューターから LAN 経由でスクリプトにアクセスすると、まったく同じ問題が発生します。

winXP 拡大するにはクリックしてください

Firefox 7.0.1またはChromiumを使用して、VirtualBox Ubuntuからアクセスした場合にのみ機能するようです

Ubuntu 拡大するにはクリックしてください

なぜこれが起こっているのかを理解しようとしてから数日が経ち、他の Websocket スクリプトを試してみましたが、それらは Ubuntu からアクセスした場合にのみ機能します。この同じスクリプトをUbuntu / XAMPPにインストールしても、同じ問題に悩まされていました(スクリプトはUbuntuでは正常に実行されますが、他のオペレーティングシステムでは実行されません)。

私はこれに夢中になっています、なぜそれが起こっているのですか??

0 投票する
2 に答える
7428 参照

google-chrome-extension - Chrome 19 で WebSocket 接続が機能しない

Firefox と Chrome 18 で完全に動作する Websocket クライアント/サーバーがあります。Chrome 19 ベータ版では動作しません。サーバーがサポートしていない deflate-frame 拡張機能を使用しているこのブラウザーが原因であると思われます。

Chrome 19 ベータ版はハンドシェイクでこれを送信しています: "Sec-WebSocket-Extensions: x-webkit-deflate-frame"

サーバーが「Sec-WebSocket-Extensions:」を返信しています。

しかし、これは拡張機能を拒否する適切な方法ではないか、私がキャッチしていない何か他の問題があります。これは、動作中のブラウザーから来るものとは異なるハンドシェイクの唯一のものです。

編集:ここにいくつかの追加情報があります。これらは、Wireshark によってキャプチャされたハンドシェイクです。


Firefox 12 を使用したハンドシェイク:

GET /chatserver HTTP/1.1
Host: (この投稿では省略)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml, application/xml;q=0.9, / ;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive, Upgrade
Sec-WebSocket-Version: 13
Origin: (この投稿では省略)
Sec-WebSocket-Key: 2TKm4ozUQdNP17Lobt7IBg==
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

HTTP/1.1 101 スイッチング プロトコル
アップグレード: websocket
接続:
Sec-WebSocket-Accept のアップグレード: pSUB3BT9YUUd9n3mOeWY/1uVqJE=


Chrome 18 を使用したハンドシェイク:

GET /chatserver HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: (この投稿では
省略) Origin: (この投稿では省略)
Sec-WebSocket-Key: zuHLEC8pGvAMadarhCLXFA==
Sec-WebSocket-Version: 13

HTTP/1.1 101 スイッチング プロトコル
アップグレード: websocket
接続:
Sec-WebSocket-Accept のアップグレード: LMBSq6Bk9Kiv+zAbQlAL899pfzc=


Chrome 19 を使用したハンドシェイク:

GET /chatserver HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: (この投稿では
省略) Origin: (この投稿では省略)
Sec-WebSocket-Key: TbwnVcuUiqGgZn7hxvxzvQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame

HTTP/1.1 101 スイッチング プロトコル
アップグレード: websocket
接続: アップグレード
Sec-WebSocket-Accept: D45BJ+Vfydy1Upcs3HZe/nuiaS8=
Sec-WebSocket-Extensions:


すべてのサーバー応答には \r\n 行末があり、メッセージの最後に余分な \r\n が含まれます。

FF12 と Chrome18は動作しますが、 Chrome19 は動作しません。Chrome19 では、サーバー ハンドシェイク応答の直後のパケットは FIN/ACK です。接続が閉じられています。

注意してください。Sec-WebSocket-Extensions 値としてハイフンを使用してみましたが、どちらも機能しませんでした。

0 投票する
1 に答える
1714 参照

php - PHPサーバーでWebSocket hybi-17フレームを送信する方法

PHPハンドシェイクでWebSocketサーバーを実装しようとすると、データの受信はうまくいきますが、クライアントにデータを送信しようとすると、Chrome 19は「サーバーはクライアントに送信するフレームをマスクしてはなりません」と言います。しかし、私はデータをマスクしません。私のコードは次のようになります。

socket_write() を使用してクライアントに送信します

編集: Firefox 13も接続を閉じます

0 投票する
2 に答える
1294 参照

php - 常に実行されているサーバー側の php websocket サーバーなしで websocket を実行する方法はありますか?

はっきりさせて

サーバー側でサーバーを実行する方法がない場合に実行する方法はありますphpwebsocketsか?websocket serverwebsockets

0 投票する
0 に答える
340 参照

php - PHP Websocketがリモート接続をリッスンしていません

Websockets を使用してリアルタイム チャット アプリを作成しようとしています。2 つの異なる PHP 実装を使用して Websockets サーバーをセットアップしようとしました。( https://github.com/lemmingzshadow/php-websocketおよびhttp://code.google.com/p/php-websocket-server/ ) xampp シェルを使用してサーバーを実行し、同じコンピュータ。しかし、同じ LAN 内の別のコンピュータを使用して接続しようとすると、サーバーはハンドシェイク要求を受信しませんでした。

それは、同一生成元ポリシーによるものですか? 回避策はありますか?

問題がある場合は、xampp 1.7.1 と PHP 5.3.8 を使用しています