Ratchetをlocalhostに設定しようとしていて、this tutorialに従っています。JavascriptがPHPに接続できませんラチェットWebSocketサーバ
私はComposerとRatchetをインストールしており、そのチュートリアルのPHPコードを正確にコピーしています。私がサーバを起動し、それにアクセスするためにtelnet
を使用すると、問題はありません。うまくいきます。
しかし、JavaScriptを使用して(HTML5ウェブソケットを使用して)接続しようとすると、接続されません。要求がしばらく時間切れになります。私はPHPコンソールとtelnetでブラウザから送られた最初のHTTP要求メッセージを見ることができます。クライアントは明らかに「接続」できます。つまり、サーバがこの要求を認識しないかのように見えます。
StackOverflowや他の同様のサイトで他の人の問題を調べておきましたが、私がやったHTTP応答をサーバに返さなければならないとの人もいました(最近接続したクライアントにsend
メソッドを使用)メッセージがGET HTTP/1.1
で始まっている場合)。私はMDNでこれについていくつかの仕様を調べて、this guideを見つけましたが、私の実装は問題に影響を与えませんでした - JavaScriptはまだ接続できませんでした。私がハンドシェイクコードを間違って実装したためか、それとも単純に私の最初の問題の解決策ではなかったかどうかはわかりません。
WebSocket +ラチェットガイドには、これを実装する必要性について言及されていないため、これは問題ではないと思われます。
私はポート8080
と8888
の両方を試してみましたが、両方とも同じ結果があります。私はここではGoogle ChromeでMacOSで60
をXAMPPを私のJavaScriptコードされて使用しています。ここでは
window.onload = function() {
var conn = new WebSocket('ws://localhost:8080');
conn.onmessage = function(e) {
console.log(e.data);
}
conn.onopen = function(e) {
console.log("Connection established!");
}
}
は私のPHPサーバーコード(bin/chat-server.php
)です:
<?php
use Ratchet\Server\IoServer;
use MyApp\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
new Chat(),
8080
);
$server->run();
そして、ここではチャットですクラス(src/MyApp/Chat.php
):