0

我正在尝试制作互联网电话交换机。基本上,当有人按下手机上的特定按钮时,它会向我的网站发出 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) {... 为了能够识别“套接字”,但我不能这样做,因为我那里已经有一个“连接中”。

帮助表示赞赏!

4

1 回答 1

0

Npm 模块 socket.io-client 完成了这项工作。

于 2012-08-03T12:43:53.720 回答