建立连接后如何运行JavaScript代码?

时间:2015-04-17 19:06:21

标签: node.js express socket.io connection reveal.js

作为Node.js的新手,我正在尝试更改Nick Anastasov的Smartphone Remote Control with Node.js and Socket.io示例,以便不需要密码。

在原始源代码中, app.js 文件在 kittens 已输入网络表单和脚本后发送{ access : 'granted' } .js 启动其主要任务,例如解开网页:

socket.on('access', function(data) {
    if (data.access === "granted") {  // XXX Tried removing this line

        blurredElements.removeClass('blurred');
        form.hide();

        $(window).on('hashchange', function() {
            // ....
        });

        socket.on('navigate', function(data) {
            // ....
        });
    }
});

我更改了 app.js ,因此根本不会发出access

然后我尝试从 script.js 中删除行if (data.access === "granted"),但这当然不起作用:网页保持模糊,因为没有{{1已收到事件(accessgranted)。

我的问题是:我应该如何更改上面的代码,以便在建立连接后运行?

我应该使用denied还是socket.on('connect')还是同样的问题(因为没有发送字符串socket.on('connection'))?

更新

正如Brad所建议的那样(谢谢!)我已经更改了 script.js 中的字符串" access"到"连接",但网页仍然模糊 - 这是完整的源代码:

connect

以下是完整的 app.js 源代码:

$(function() {
    Reveal.initialize({
        history: true
    });

    var socket = io();
    var presentation = $('.reveal');

    socket.on('connection', function(data){ // XXX changed this

                presentation.removeClass('blurred'); // XXX not called
                var ignore = false;

                $(window).on('hashchange', function(){
                        if (ignore){
                                return;
                        }
                        var hash = window.location.hash;
                        socket.emit('slide-changed', {
                                hash: hash
                        });
                });

                socket.on('navigate', function(data){
                        window.location.hash = data.hash;
                        ignore = true;
                        setInterval(function () {
                                ignore = false;
                        },100);
                });
    });
});

1 个答案:

答案 0 :(得分:1)

是的,你想要io.on('connection')。每当新客户端连接时,都会触发此事件。

http://socket.io/docs/