しばらくの間、コード/設定の何が問題なのかを突き止めようとしています。基本的には、クライアントからサーバーにメッセージを送信したいと考えています。以下は、 FF(11) と chrome(18.0.1025.152 m)を除くすべてのブラウザーで機能します。
ここにいくつかの情報があります:
- Windows 7 エンタープライズ 64 ビット マシンで Node.js を実行しています
- Apache を使用して localhost からページを提供します
- socket.io を使用してポート 8080 でリッスンしています。
- ソケットを使用する代わりに、chrome と FF が xhr-polling / jsonp-polling にフォールバックするように見えます
- サーバーからメッセージをプッシュできますが、クライアントから送信できません
サーバーコード:
var io = require('C:/Users/shlomis/node_modules/socket.io/lib/socket.io').listen(8080);
io.sockets.on('connection', function (socket) {
socket.on('my event', function (msg) {
console.log("DATA!!!");
});
});
フルパスなしでrequireする方法が見つかりませんでした
クライアントコード:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello World!</title>
<meta charset="utf-8">
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var socket = io.connect('http://localhost:8080');
$("#button").click(function() {
socket.emit('my event' ,"Hello World!");
})
})
</script>
</head>
<body>
<button type="button" id='button'>Send Message</button>
</body>
</html>
モジュールのバージョン:
C:\Users\shlomis>npm ls
mukhin_chat@0.0.1 C:\Users\shlomis
├─┬ express@2.5.9
│ ├─┬ connect@1.8.6
│ │ └── formidable@1.0.9
│ ├── mime@1.2.4
│ ├── mkdirp@0.3.0
│ └── qs@0.4.2
└─┬ socket.io@0.9.5
├── policyfile@0.0.4
├── redis@0.6.7
└─┬ socket.io-client@0.9.5
├─┬ active-x-obfuscator@0.0.1
│ └── zeparser@0.0.5
├── uglify-js@1.2.5
├─┬ ws@0.4.12
│ ├── commander@0.5.2
│ └── options@0.0.3
└── xmlhttprequest@1.2.2
ノードログ:
C:\Users\shlomis>node C:\dev\wamp\www\AR\js\videoServer.js
info - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized 17502185141066845391
debug - setting request GET /socket.io/1/websocket/17502185141066845391
debug - set heartbeat interval for client 17502185141066845391
debug - client authorized for
debug - websocket writing 1::
debug - setting request GET /socket.io/1/xhr-polling/17502185141066845391?t=1334041653716
debug - setting poll timeout
debug - discarding transport
debug - cleared heartbeat interval for client 17502185141066845391
chrome WS リクエスト (101 スイッチング プロトコル):
クローム XHR リクエスト:
更新:追加しました
socket.on('connect', function () {
console.log("connected");
});
クロムでは決して発火しません。
では、何が間違っているのでしょうか?助けてください:)