// websocket连接
var websocket = null;
//判断window当前浏览器是否支持WebSocket
if ('WebSocket' in window) {
websocket = new WebSocket("服务器地址");
}
else {
alert('当前浏览器 Not support websocket')
}
//连接发生错误时
websocket.onerror = function () {
console.dir("发生错误");
};
//连接成功时方法
websocket.onopen = function () {
console.dir("连接成功");
}
//接收到消息的回调方法
websocket.onmessage = function (event) {
setMessageInnerHTML(event.data);
}
//连接关闭方法
websocket.onclose = function () {
console.dir("连接关闭");
}
//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
window.onbeforeunload = function () {
websocket.close();
}
//将消息显示在网页上
function setMessageInnerHTML(innerHTML) {
Notification.requestPermission(function (permission) {
if (permission == "granted") {
var notification = new Notification("您有一条新的订单", {
dir: "auto",
lang: "zh-CN",
icon: 'http://127.0.0.1/manage/resources/img/xyyd_logo.jpg',
body: innerHTML,
silent: true, // 通知出现的时候,是否要有声音
requireInteraction:true, // 通知保持有效不自动关闭,默认为false
vibrate: [200, 100, 200],
timestamp: '1000',
})
}
});
}
var notification = new Notification('您有一条新的订单',{
body: '您有一条新的订单'}).setTimeout(function() {
notification.close();}, 3000);
Notification.permission
用于表明当前通知显示的授权状态,它有三个值:
default
: 默认值,用户还未选择
granted
: 用户允许该网站发送通知
denied
: 用户拒绝该网站发送通知
if (Notification.permission === 'granted') {
console.log('同意授权过');
// 随时可以显示通知
} else if (Notification.permission === 'default') {
console.log('还未选择同意/拒绝');
// 下一步请求授权
} else {
console.log('拒绝授权 不能显示通知');
}
OPTIONS参数
{
//通知显示正文。非必须,默认为空
body: '你的好友XX上线了!',
//通知显示正文的图片地址。非必须,默认为空
image: 'imgae url',
//通知左侧图标。非必须,默认为空
icon: 'imgae url',
//通知的分类标记(ID)。非必须,默认为空
tag: 'test',
//通知相关联的数据,通常用于方法的回调,传参。非必须,默认为空
data: '可以是任意数据类型',
//通知显示延迟的时间。非必须,默认通知实例创建完成就显示
timestamp: '',
//通知主体内容的水平展示顺序,有点类似direction属性。非必须,默认值是auto, 可以是ltr或rtl
dir: 'auto',
//当没有足够的空间来显示通知本身时,用于表示通知的图像的URL。非必须,默认为空
badge: 'xxx',
//通知的语言。非必须默认为空
lang: '',
//通知显示时,设备的振动模式。非必须,默认为空
vibrate: [200, 100, 200],
//新通知出现是否覆盖旧的通知,覆盖(true)则永远只显示一条通知,不覆盖(false)则会多条通知重叠。非必须,默认为true
renotify: true,
//通知是否静音。非必须,默认为false,表示无声
silent: false,
//通知声源文件地址。非必须,默认为空
sound: 'mp3',
//是否不在屏幕上显示通知信息。非必须,默认为false表示要显示
noscreen: false,
//指定通知是否应该粘滞性,即不容易被用户清理。非必须,默认false表示不具粘滞性
sticky: false,
//指定通知是否保持活性,知道用户点击或关闭。非必须,默认为false
requireInteraction: false
}