インターネット電話のスイッチを作ろうとしています。基本的に、誰かが自分の電話の特定のボタンを押すと、私のウェブサイトへの 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つあります。
助けていただければ幸いです。