Javascript Totaljs FrameworkWebSocket客户端

Javascript Totaljs FrameworkWebSocket客户端,javascript,node.js,total.js,Javascript,Node.js,Total.js,我想使用WebSocket将更新从服务器发送到客户端 我知道我可以使用服务器发送的事件,但Internet Explorer与它没有很好的兼容性,所以我更喜欢使用websocket TotalJSWebSocket允许我像客户端一样使用它吗 我正在尝试这样做:TotalJSWebSocket示例 exports.install = function(framework) { framework.route('/'); framework.route('/send/', send_

我想使用WebSocket将更新从服务器发送到客户端

我知道我可以使用服务器发送的事件,但Internet Explorer与它没有很好的兼容性,所以我更喜欢使用websocket

TotalJSWebSocket允许我像客户端一样使用它吗

我正在尝试这样做:TotalJSWebSocket示例

exports.install = function(framework) {
    framework.route('/');
    framework.route('/send/', send_message);

    framework.websocket('/', socket_homepage, ['json']);
};

function send_message() {
    var controller = this;
    var socket = new WebSocket('ws://127.0.0.1:8000/');
    socket.onopen = function() {
        socket.send(encodeURIComponent(JSON.stringify({ message: "send_message" })));
    };
    socket.close();
    socket = null;
}

function socket_homepage() {
    var controller = this;

    controller.on('open', function(client) {
        console.log('Connect / Online:', controller.online);

        client.send({ message: 'Hello {0}'.format(client.id) });
        controller.send({ message: 'Connect new user: {0}\nOnline: {1}'.format(client.id, controller.online) }, [], [client.id]);
    });

    controller.on('close', function(client) {
        console.log('Disconnect / Online:', controller.online);
        controller.send({ message: 'Disconnect user: {0}\nOnline: {1}'.format(client.id, controller.online) });
    });

    controller.on('message', function(client, message) {
        console.log(message);

        if (typeof(message.username) !== 'undefined') {
            var old = client.id;
            client.id = message.username;
            controller.send({ message: 'rename: ' + old + ', new: ' + client.id });
            return;
        }

        // send to all without this client
        message.message = client.id + ': ' + message.message;
        console.log(message);
        controller.send(message);
    });
}
当某人连接到连接到服务器的所有客户端时,将收到一条消息

Node.js没有本机WebSocket支持,因此发送消息功能无法工作。我想使用TotalJs Websocket支持,但我不知道如何像客户端一样使用它

就这样


非常感谢。

我知道这不是最好的方法,但我使用了全局变量来解决

exports.install = function(framework) {
    framework.route('/');
    framework.route('/send/', send_message);

    framework.websocket('/', socket_homepage, ['json']);
};

function send_message() {
    if (websocket == null) return;
    websocket.send({ message: "Hello World!" });
}

var websocket = null;
function socket_homepage() {
    //var controller = this;
    websocket = this;

    websocket.on('open', function(client) {
        console.log('Connect / Online:', websocket.online);

        client.send({ message: 'Hello {0}'.format(client.id) });
        websocket.send({ message: 'Connect new user: {0}\nOnline: {1}'.format(client.id, websocket.online) }, [], [client.id]);
    });

    websocket.on('close', function(client) {
        console.log('Disconnect / Online:', websocket.online);
        websocket.send({ message: 'Disconnect user: {0}\nOnline: {1}'.format(client.id, websocket.online) });
    });

    websocket.on('message', function(client, message) {
        console.log(message);

        if (typeof(message.username) !== 'undefined') {
            var old = client.id;
            client.id = message.username;
            websocket.send({ message: 'rename: ' + old + ', new: ' + client.id });
            return;
        }

        // send to all without this client
        message.message = client.id + ': ' + message.message;
        console.log(message);
        websocket.send(message);
    });
}

我不熟悉total.js,但你看过文档中的示例吗:现在尝试,但我认为controller.send只存在于我们使用framework.websocket路由,而我使用framework.route的情况下。我尝试了console.logcontroller.send;内部发送消息函数,我收到未定义的消息。非常感谢。我现在需要通过不同服务器上的套接字发送消息?你知道吗?函数send_message{var controller=this;var socket=new WebSocket'ws://127.0.0.2:8000/';socket.onopen=function{socket.sendencodeURIComponentJSON.stringify{message:send_message};};socket.close;socket=null;}我可以在node.js中打开这样的新服务器套接字吗?