0

インターネット電話のスイッチを作ろうとしています。基本的に、誰かが自分の電話の特定のボタンを押すと、私のウェブサイトへの GET 呼び出しが行われ、その GET 呼び出しは、ウェブサイトに接続している全員が見ることができる socket.IO を介してイベントを発生させます。

私は GET 呼び出しを正常に取得し、サーバーはそれを正常に認識します。しかし、電話は Web ページをレンダリングできないため、イベントを発生させることができません。2 台の異なるコンピューターと 2 つのブラウザーだけで、すべてが思いどおりに機能します。

「layout.jade」にあるページをレンダリングすると、正しいページにいる場合にイベントを発生させるこのコードが表示されます。

var socket = io.connect('http://MYWEBPAGE.org:3000');
    socket.on('connect', function () {
        if ($('title')[0].text == "IMC_log") {
            socket.emit('server_call');
        }
    });
    socket.on('call', function () {
        console.log("CALL HERE");
    });

そして、私が持っているserver.jsで

io.sockets.on('connection', function (socket) {
    socket.on('server_call', function () {
        socket.broadcast.emit('call');
    });
});

ブラウザだけを使用すると、これが機能します。しかし、携帯電話を使用すると、(おそらく) ページをレンダリングできないため、「server_call」イベントが発生せず、実際に「layout.jade」が使用されることはありません。しかし、GET呼び出しはうまくいくので、server.jsファイル(またはindex.js、どちらも問題ありません)からそのイベントを発生させたいと思っていますが、残念ながらそれを行う方法がわかりません。このように発砲しようとすると:

app.get ("/log_get", function () {
    socket.broadcast.emit('call');
});

ソケットが定義されていないと泣き言を言うだけです。問題は、「ソケット」を認識できるようにするために io.sockets.on('connection', function (socket) {... が必要なようですが、私はそれを行うことができません。そこにはすでに「接続中」のものが1つあります。

助けていただければ幸いです。

4

1 に答える 1

0

Npm モジュール socket.io-client がその仕事をしました。

于 2012-08-03T12:43:53.720 に答える