当前位置: 首页 > 知识库问答 >
问题:

如何利用node js将消息从web服务器推送到浏览器

邢飞雨
2023-03-14

null

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="stylesheet" href="css/animate.css">
<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.min.js"></script>

<script type="text/javascript" >
$(document).ready(function()
{
$("#notificationLink").click(function()
{
$("#notificationContainer").fadeToggle(300);
$("#notification_count").fadeOut("slow");
return false;
});

//Document Click
$(document).click(function()
{
$("#notificationContainer").hide();
});
//Popup Click
$("#notificationContainer").click(function()
{
return false
});

});
</script>
<style>
body{background-color:#dedede;font-family:arial}
#nav{list-style:none;margin: 0px;
padding: 0px;}
#nav li {
float: left;
margin-right: 20px;
font-size: 14px;
font-weight:bold;
}
#nav li a{color:#333333;text-decoration:none}
#nav li a:hover{color:#006699;text-decoration:none}
#notification_li{position:relative}
#notificationContainer {
background-color: #fff;
border: 1px solid rgba(100, 100, 100, .4);
-webkit-box-shadow: 0 3px 8px rgba(0, 0, 0, .25);
overflow: visible;
position: absolute;
top: 30px;
margin-left: -170px;
width: 400px;
z-index: -1;
display: none;
}


#notificationsBody {
padding: 33px 0px 0px 0px !important;
min-height:300px;
}

#notification_count {
padding: 3px 7px 3px 7px;
background: #cc0000;
color: #ffffff;
font-weight: bold;
margin-left: 100px;
border-radius: 9px;
position: absolute;
margin-top: 0px;
font-size: 11px;
}
</style>
</head>

<body >
<div style="margin:0 auto;width:900px; margin-top: 30px;">
<ul id="nav">

<li id="notification_li">
<span id="notification_count">5</span>
<a href="#" id="notificationLink">Notifications</a>
<div id="notificationContainer">
<div id="notificationTitle">Notifications</div>
<div id="notificationsBody" class="notifications">
</div>

</div>
</li>
</ul>

</div>

</body>
</html>

null

我正在处理一个从服务器获得通知的页面。我只是创建了一个按钮和一个小div显示通知号码。我想让div在服务器推送到那个div时从服务器得到通知。如何从服务器获取推送通知。我想要从服务器接收通知的客户端代码。我只是使用了另一个系统和节点js是服务器。

谢谢.

共有1个答案

习斌
2023-03-14

您可以使用node JS来实现它。下面是一个工作代码示例。节点js:index.js

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

app.get("/", function (req, res) {
    res.sendFile("index.html", {root: __dirname});
});
io.on("connection", function (socket) {
    socket.on("notify", function (notification_request) {
        io.emit('notify', JSON.stringify(notification_request));
    });
});
http.listen(3000, function () {
    console.log('listenting on 3000');
});

之前的前端index.html

<script>
    var socket = io();
    $('button').click(function () { //notify event triggered
        socket.emit('notify', {notification-1: "message1", notification-2: "message2", notification-3: "message3"});
        return false;
    });
    socket.on('notify', function (notification) {
        var notifications = JSON.parse(notification); //process notication array
        $('#notification-div').append(notifications); //display the notification here which is going to be reflected for all clients
    });
</script>

在终端或CLI上运行index.js文件以激活服务器。并且不要忘记安装以下节点模块

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
 类似资料:
  • 在过去的几个小时里,我一直在阅读推送通知应用编程接口和网络通知应用编程接口。我还发现谷歌 我试图了解我们是否可以使用桌面通知实现对浏览器的推送通知,我相信这就是Web通知API所做的。我在这里看到了一个关于如何为Chrome做到这一点的谷歌文档 现在我还不明白的是: 我们可以使用GCM/APNS向包括Firefox在内的所有Web浏览器发送推送通知吗 我相信所有这些答案都可以帮助很多有类似困惑的人

  • 我正在开发一个基于云的后端HTTP服务,该服务将公开用于与一些on-prem系统的集成。客户机系统是由外部供应商定制的,它们是带有自己数据库的后端系统。这些系统部署在我们客户的公司中,我们无法访问它们,也无法控制它们。我们向供应商提供我们的API规范,他们实现客户机代码。 我的服务与客户交换的数据格式基于XML,并遵循一定的标准。供应商用不同的编程语言实现他们的客户机系统,随着时间的推移,新的供应

  • 问题内容: 我当然知道Ajax,但是Ajax的问题​​在于浏览器应该经常轮询服务器以查找是否有新数据。这会增加服务器负载。 除了频繁轮询服务器之外,还有什么更好的方法(甚至使用Ajax)吗? 问题答案: 是的,您正在寻找的是COMET http://en.wikipedia.org/wiki/Comet_(programming)。要搜索的其他优质Google术语还有AJAX- push和反向aj

  • 问题内容: 我想使用Android将数据发送到我的php页面。我该怎么做? 问题答案: 您可以使用AndroidHttpClient进行GET或POST请求: 创建一个AndroidHttpClient来执行您的请求。 创建一个HttpGet或HttpPost请求。 使用setEntity和setHeader]方法填充请求。 对您的请求使用客户端上的execute方法之一。

  • 我在想,为什么像谷歌Chrome/Firebug/Fiddler这样的网络检查员在使用WebSockets/channel-API这样的推送技术时无法跟踪消息(或者有没有办法做到这一点?)这是因为我们正在从HTTP升级连接吗?

  • 在我的项目中,我创建了一个名为的新分支,并希望将该分支推送到服务器,但它似乎一直在推主分支。 github: 两个GitHub分支:Master和Dev 在服务器上: 我有一个生产网站:例如。com 我的工作流程: 我在本地工作,然后推送到GitHub Dev 这就是我想做的。 我目前被困在将Dev分支推送到Staging服务器:dev.example.com 这是我的本地git配置文件: 在我的