无法在nodejs中使用网络电话与socket-IO连接

时间:2012-07-25 14:51:23

标签: events node.js socket.io

我试图打开网络电话。基本上当有人按下手机上的特定按钮时,它会对我的网站进行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('连接',函数(socket){...以便能够识别" socket" ,但我无法做到这一点,因为我已经有一个"连接"那里。

非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

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