「プッシュ通知機能」のレイヤーとしてsocket.ioとnodeを使用したいので、Apacheとノードの両方を実行しています。socket.ioを使用してメッセージを送信する方法
私は自分のサーバー上で、次のコード(ノード)
var app = require('http').createServer(handler)
, io = require('C:/path/to/file/socket.io').listen(app)
, fs = require('fs');
app.listen(8080);
function handler(req, res) {
console.log(req);
fs.readFile('C:/path/to/file/index.html',
function (err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.on('my event', function (msg) {
console.log("DATA!!!");
});
});
を持っているページは、その後
8080ポートせずにローカルホストからのapacheで提供され、クライアント上で、私は次のコードを持っている:
をvar socket = io.connect('http://localhost:8080');
と、ボタンがクリックされた:
socket.emit('my event', {data:"some data"});
ノードコンソールで何も表示されません...なぜですか?クロスドメインの問題?
更新:それはサファリ5.1.5とさえIE 9でうまく動作しますが、ないクロム(18.0.1025.151)またはFirefox(11.0)に ...私は何をしないのですか?ここ
は、ノードのログです:
info - socket.io started
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized 4944162402088095824
debug - setting request GET /socket.io/1/websocket/4944162402088095824
debug - set heartbeat interval for client 4944162402088095824
debug - client authorized for
debug - websocket writing 1::
debug - setting request GET /socket.io/1/xhr-polling/4944162402088095824?t=13
33977095905
debug - setting poll timeout
debug - discarding transport
debug - cleared heartbeat interval for client 4944162402088095824
返信いただきありがとうございます!明らかに私の問題はローカルですが、あなたの例はSafariとIEでは正常に動作しますが、私のChromeやFirefoxではうまくいきません。 PS:私はWebRTCを使いこなしていますので、この機能が私のクロムで有効になっています(「MediaStreamを有効にする」Macromedia、Windows、Linux、Chrome OS WebRTC機能のMediaStream、GetUserMedia、PeerConnection APIを有効にする。 ")、それを無効にしようとすると成功しなかった...他のアイデア? –
試してみました。私はWindows 7上でノードを実行していますが、C:\ Users \ shlomis \ node_modules \ socket.ioのようにsocket.ioへのフルパスを使用しています( ) –
これは奇妙なものです... FirefoxでChrome開発ツールやFirebugを開き、[ネット]タブを開くと、より多くの情報が得られる可能性がありますフードの下で起こっていることについて –