質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

5454閲覧

PHPでWebsocketを実装後、接続できない

sakura_hana

総合スコア11425

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/02/17 12:30

下記のスクリプトを利用して、PHPでWebsocketを利用してチャットを作っています。
http://d.hatena.ne.jp/susan-style/20140306/1394103655
クライアント側はJavascriptで制御しています。

ローカル環境(MAMP)では正常に動作していた為、サーバーにファイルをアップロードしました。
(どちらもSafariバージョン9で確認しています。
使っているポートは443、サーバー側のPHPはとりあえずテストとしてブラウザから直接URLを打ち込んでいます)

するとすぐoncloseが呼ばれ、そのメソッド内でログを出すと以下のようになります。
readyState = 3
wasClean = false
code = 1006
reason = 空欄

コード1006は何らかの理由で接続に失敗している、というのは分かったのですが、詳細が隠されていて解決の糸口も得られません。
Websocketの使用は初めてで困っています。何か考えられる原因とそれを調査する方法がありましたら教えて頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

WebSocket で 1006 が返ってくるようだと、接続 or Handshake がうまくいっていないような気がします。
ただし、1006 エラーは下記URLを見ていただくとわかる通り、結構範囲が広く、エラー原因は多種多様になります。

http://www.hcn.zaq.ne.jp/___/WEB/WebSocket-ja.html#feedback-from-the-protocol

● 確認したほうが良い内容

  1. サーバー(IP?)には正しくアクセスできるのでしょうか。
  2. server.phpに正しくアクセスしていることは、確認されているのでしょうか。(ログなどを仕込む)
  3. 443 ポートを利用しているということは、wss プロトコルで通信しているのでしょうか?

その場合、秘密鍵・SSL証明書は正しく設定されていらっしゃいますか?
4. ポートを 443 ではなく適当な値に変更しても同じ現象が生じるのでしょうか?
(サーバー側のファイヤーウォールによって、ポートを開けることができないかもしれませんが・・・)

投稿2016/02/18 01:22

usk

総合スコア397

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ソースとか見てないのでわかりませんが、まずサーバー側ですがfirewallなどで引っかかってないですか?
ポートを開放していないなど。

こちらも、現在JavaScriptのみでwebsocketを実装していますが、接続できないなぁーと思ったらポートの設定でした。(VPS側の設定だったのでfirewallなど開放しても、ダメだったのが有りました)

たとえば、3000ポートを設定して、3000ポート開放してもだめですか?

投稿2016/02/18 00:52

rihito

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問