从服务器传送js套接字广播

时间:2014-01-26 09:39:29

标签: node.js socket.io sails.js

我用SailsJs完成了我的第一个应用程序。目前我正在使用ajax来检索页面数据,但我想将其更改为使用套接字。我在服务器上运行了一个cron作业,我的目的是在完成每个cron作业后向所有连接的客户端发送消息。我可以从github看到echo示例:https://github.com/balderdashy/sails-docs/blob/0.9/sockets.md,但它不是我需要的。我宁愿看服务器发送消息,也不需要客户端发送任何东西,只能听。

服务器端CronController.js

// including my cron script
var cron = require('../../assets/js/cron');

module.exports = {
   index: function (req, res) {
        // including cron job module
        var cronJob = require('cron').CronJob;
        var job = new cronJob('0,10,20,30,40,50 * * * * *', 
            function() {
                cron.run();
            }, function () {
                console.log('cron done');
            },
            true,
            null
        );
        return res.json({
            message: 'running cron...'
        });
    },
    _config: {}
};

服务器端cron.js

var io = require('socket.io').listen(8887);
io.sockets.on("connection", function (s) {
    s.emit('welcomemessage', { hello: "world" });
});

// Later on code
io.sockets.emit('Cron done', {msg:"msg"});

客户端script.js

socket.on('welcomemessage', function (json) {
    console.log(json);
});

socket.on('Cron done', function (json) {
    console.log(json);
});

我也更改了socket.io.js端口:8887

控制台说:info - socket.io已启动,网页localhost:8887指示套接字正在工作,但我没有得到欢迎消息或其他消息给客户端...

处理相同问题的其他主题:

node.js + socket.io broadcast from server, rather than from a specific client?

emit socket.io and sailsjs (Twitter API)

Node.js client for a socket.io server

我发现客户端的socket变量能够通过控制器操作获取消息:

socket.get("/mycontroller", function (response) { console.log(response); });

所以我必须做的是:

var s = io.connect("http://localhost:8887");

s.on('welcomemessage', function (json) {
    console.log(json);
});

0 个答案:

没有答案