我正在尝试制作互联网电话交换机。基本上,当有人按下手机上的特定按钮时,它会向我的网站发出 GET 调用,并且该 GET 调用会通过 socket.IO 触发一个事件,连接到该网站的每个人都可以看到该事件。
我得到了 GET 调用就好了,我的服务器注意到它就好了。但由于手机无法呈现网页,我无法让它触发事件。如果我只有两台不同的计算机和两个浏览器,那么一切都会按照我想要的方式运行。
当我在我的“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) {... 为了能够识别“套接字”,但我不能这样做,因为我那里已经有一个“连接中”。
帮助表示赞赏!