PCブラウザからNode.jsのプログラムにSokect.ioで接続できません。
PCのブラウザとサーバ上とでSocket通信をしようと思っています。環境は以下の通りです。
Ubuntu 14.04
apache2 2.4.7
ブラウザでページを開くとサーバに接続してメッセージ「hello」を送るプログラムです。なぜかNode.jsのログを確認しても、ブラウザのログを確認しても接続したログがありません。
Node.js(サーバ側) msg.js
var fs = require("fs");
var http = require("http");
var server = http.createServer(function(req,res) {
res.writeHead(200, {"Contents-Type":"text/html"});
var output = fs.readFileSync("./index.html", "utf-8");
res.end(output);
});
// socketioの準備
var io = require('socket.io')(server);
// クライアント接続時の処理
io.on('connection', function(socket) {
var id = socket.id;
console.log("client connected!!");
console.log(id)
// クライアント切断時の処理
socket.on('disconnect', function() {
console.log("client disconnected!!")
});
// クライアントからの受信を受ける (socket.on)
socket.on("from_client", function(obj){
io.emit("from_server", obj);
console.log(obj)
});
});
server.listen(3000);
PCブラウザ(クライアント)側のindex.html
<meta charset="UTF-8">
<html>
<head>
</head>
<body>
<script src="http://www.ubuntu.jp/node/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('ws://www.ubuntu.jp',{path:'/node/'});
socket.on('connect', function() {
console.log('connected');
socket.emit('from_client', 'from PC browser');
socket.on('from_server', function(msg) {
console.log(msg);
});
});
</script>
</body>
</html>
apacheでwsプロトコルをReverse Proxyしています。apacheの設定としては以下の通りです。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName ubuntu.jp
ServerAlias www.ubuntu.jp
DocumentRoot /var/ubuntu
Options FollowSymLinks MultiViews ExecCGI
DirectoryIndex index.html index.php
Alias /node /var/ubuntu/node
ProxyPass /node/ http://localhost:3000/
ProxyPass /node/ ws://localhost:3000/
ProxyPassReverse /node/ http://localhost:3000/
ProxyPassReverse /node/ ws://localhost:3000/
ErrorLog ${APACHE_LOG_DIR}/ubuntu_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ubuntu_access.log combined
ServerSignature Off
<Directory "/var/ubuntu/">
Require all granted
</Directory>
</VirtualHost>
ブラウザで
http://www.ubuntu.jp/node/
にアクセスしました。Firefoxで確認しましたが、consoleログに
SyntaxError: expected expression, got '<'( socket.io.js:1:0)
という表示で、socket.io.jsからエラーが出ています。
原因および対処方法をご存知の方はご教授お願いします。