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

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

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

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

6133閲覧

PHPからのJavascriptの読み込みについて

soh

総合スコア13

WebSocket

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/07/27 15:51

webソケット通信をするjsファイルをphpから制御しようとしています。

main.js

1$(function(){ 2 var ws = null; 3 var open = false; 4 5 var fun_WebSocket = function(){ 6 ws = new WebSocket('wss://hogehogehoge'); 7 ws.onmessage = function(e){ 8 }; 9 ws.onclose = function(){ 10 }; 11 ws.onopen = function(){ 12 open = true; 13 }; 14 ws.onerror = function(event) { 15 }; 16 } 17 18 function repeat_submit() { 19 const obj = { 20 module: 'hogehoge', 21 type: 'channels', 22 datetime: new Date().toISOString(), 23 payload: {channels: [{channel: 0, type: 'I', value: 1}]} 24 }; 25 var repeat = setTimeout(repeat_submit, 1000); 26 if(open) { 27 ws.send(JSON.stringify(obj)); 28 clearTimeout(repeat); 29 } 30 } 31 32 fun_WebSocket(); 33 repeat_submit(); 34 35}); 36

このファイルを、下記のようにhtmlファイルから読み込んでいます。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>title</title> </head> <body> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="./main.js"></script> </body> </html>

みたいな形で読み込んでいます。
phpから上記のjsを実行したいのですが、

<?php $options = array( 'http'=>array( 'method'=>'GET', 'header'=>"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n". "Accept-language: ja\r\n" ) ); $context = stream_context_create( $options ); $contents = file_get_contents( 'http://hogehoge.com', FALSE, $context ); echo $contents; ?>

としてもhtmlファイルが返ってくるだけです。
どのようにすればブラウザと同様にjsを実行できるのでしょうか。

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

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

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

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

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

guest

回答1

0

プログラム言語と言うのは、常にその実行環境を必要とします。
PC上でPHPのコードを動かそうと思ったら、そのPCにPHPをインストールする必要がありますよね。
JavaScriptについても同様で、JavaScriptの実行エンジンが必要になります。
通常はブラウザ側がそのエンジンを持っているので、特に何かをインストールする事なく実行できるわけですが。
(ブラウザごとにJavaScriptのコードを変えなければならなかったりするのは、このエンジンが異なるからです)

質問文にあるように、JavaScriptのファイルをHTTPで取得して中身をechoしただけでは、当然JavaScriptは実行されません。
サーバー側でJavaScriptを動かしたければ、Node.jsのようなサーバー側のJavaScript実行環境が必要です。
それはそれで、上記コードをそのままNode.js環境に放り込んでも動くわけではないのですが。

コードを見る限り、そのJavaScriptをなんとか使おうとするよりはPHPで通信機能を再構築した方が早いように思います。

投稿2016/07/27 16:26

kunai

総合スコア5405

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問