javascript中的通知 - 类似于gmail中的新电子邮件

时间:2015-02-26 05:51:39

标签: javascript

我正在创建一个小部件,它将更新一些正在发生的新闻。每当我在数据库中获得一些新信息时,我想将通知推送到窗口小部件。它类似于实时饲料。我不确定如何在javascript中启动这个。

我不想每隔n秒轮询一次以获取信息。我希望服务器每次服务器获取新信息时都将信息推送到客户端。

它类似于gmail。即使没有刷新页面,您也会收到一封电子邮件。

任何指针肯定都会有所帮助。

2 个答案:

答案 0 :(得分:0)

你基本上有两个选择,我能想到的是:

  1. 使用 HTTP ,您可以每隔x秒询问一次服务器,是否有任何新信息,如果有,则加载&展示下。如果您使用的是HTTP,则服务器无法联系客户端,它只能回答客户端的请求。
  2. 使用套接字,您可以创建双向通信,客户端都可以将数据发送到服务器,服务器可以将数据发送到客户端。这样,服务器可以尽快发送信息。 Here您可以找到有关支持的浏览器的信息。

答案 1 :(得分:0)

中间节点服务器可以帮助将业务逻辑与轮询操作分开。 需要安装这些软件包 - socket.io,express,request

npm install <package_names>

从节点获取请求数据:

 var socket = io.connect('http://localhost:3000');
 socket.emit('pollNodeServer',JSON.stringify(requestToServer));

在服务器上:

var http = require('http'),
    request = require('request'),
    app = require('express')(),
    server = require('http').Server(app),
    io = require('socket.io')(server);

server.listen(3000);
console.log('Server started at port 3000');

var options = {
    headers : {
        'Content-Type' : 'application/json',
        'User-Agent' : 'request'
    }
};
socket.on('pollNodeServer', function(data, callbackfn) {
    requestServer(data,socket,callbackfn);
});

来自服务器的回复:

socket.emit('returnJobs',JSON.parse(body));