js实现websocket实例

简介: js实现websocket实例
<!-- websocket 接口 -->
<script type="text/javascript">
var websocket_url = 'ws://127.0.0.1:' + "{$Think.config.prompt_service.ws_port}";
var admin_userid = "{$Think.const.UID}";
var socket_type = JSON.parse('{$mginfo.socket_type|default=[]|json_encode}');
</script>
<script src="__JS__/socket_notify.js?v=20191018"></script>

socket_notify.js

var ws_text = document.location.protocol == 'https:' ? 'wss' : 'ws';
websocket_url = ws_text + '://' + window.location.host + '/socket.io/';
var socket = new WebSocket(websocket_url);
//连接成功时触发
socket.onopen = function() {
    console.log('connected to server!');
    // 登录
    socket.send(JSON.stringify({
        type: 'login',
        uid: admin_userid,
    }));
    setInterval(function() {
        console.log('Hello!');
        socket.send('Hello!');
    }, 30000)
};
var socket_func = {};
//监听收到的消息
socket.onmessage = function(res) {
    let Sound      = false;
    let alerttitle = false;
    let alerttext  = false;
    let alertlocal = false;
    let content    = '';
    let func       = '';
    var data = JSON.parse(res.data);
    console.log(data);
    var type = data.type;
    try {
        content = JSON.parse(data.data);
    } catch (err) {
        content = data.data;
    }
    const alert_check = data.alert;
    switch (type) {
        case 'newCpOrder':
            func       = type;
            Sound      = 1;
            alerttitle = '新公司入款订单';
            alerttext  = '订单ID:' + content.id;
            alertlocal = '/cp_recharge/index.html';
            break;
        case 'newAgentOrder':
            func       = 'newTxOrder';
            Sound      = 2;
            alerttitle = '新代理出款订单';
            alerttext  = '订单ID:' + content.id;
            alertlocal = '/exchange/index.html';
            break;
    }
    if (alert_check) {
        if ((!socket_type[type] || socket_type[type]['sound'] === 1) && Sound !== false) {
            playSound(Sound);
        }
        if ((!socket_type[type] || socket_type[type]['text'] === 1) && alerttitle !== false) {
            notify(alerttitle, alerttext, alertlocal);
        }
    }
    // 执行方法
    if (func) {
        try {
            socket_func[func](content);
        } catch (err) {
            console.log('没有当前方法' + func);
        }
    }
};
// 断开
socket.onclose = function(e) {
    console.log('websocket 断开: ' + e.code + ' ' + e.reason + ' ' + e.wasClean)
    console.log(e);
}
var Notification = window.Notification || window.webkitNotification || window.mozNotification;
var stopSound = function() {};
// 播放声音
var playSound = function(type) {
    var audio_id = 'recharge_audio';
    switch (type) {
        case 1:
            audio_id = 'recharge_audio';
            break;
        case 2:
            audio_id = 'withdraw_audio';
            break;
        case 3:
            audio_id = 'withdraw_audio';
            break;
        case 4:
            audio_id = 'untreated_recharge';
            break;
        case 5:
            audio_id = 'untreated_withdraw';
            break;
        case 6:
            audio_id = 'large_recharge';
            break;
        default:
    }
    var audio = document.getElementById(audio_id);
    audio.currentTime = 0;
    audio.play();
};
var notify = function() {};
// web 页面通知
if (Notification) {
    Notification.requestPermission().then(function(permission) {
        if (permission === 'granted') {
            notify = function(title, content, url) {
                var options = {
                    body: content,
                };
                var instance = new Notification(title, options);
                instance.onshow = function() {
                    setTimeout(function() {
                        instance.close();
                    }, 18000);
                };
                instance.onclick = function() {
                    window.open(url);
                };
            };
            window.notify = notify;
        }
    });
}


目录
相关文章
|
4月前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
268 0
|
5月前
|
JavaScript 前端开发 网络协议
Vue.js 与 WebSocket 的惊世联姻!实时数据通信的震撼变革,你敢错过?
【8月更文挑战第30天】在现代Web开发中,实时数据通信至关重要。Vue.js作为流行前端框架,结合WebSocket技术,实现了高效实时的数据交互。本文简要介绍了WebSocket原理及其在Vue.js项目中的应用方法,包括建立连接、监听事件及数据处理等步骤,展示了如何利用二者结合轻松应对实时聊天、股票更新等多种场景,为开发者提供了实用指南。希望本文能帮助您更高效地实现Web应用的实时通信功能。
223 0
|
4月前
|
JavaScript 前端开发 开发工具
五子棋小游戏(JS+Node+Websocket)可分房间对战
本文介绍了通过JS、Node和WebSocket实现的五子棋游戏,支持多人在线对战和观战功能。
121 1
五子棋小游戏(JS+Node+Websocket)可分房间对战
|
3月前
|
前端开发 JavaScript
基础 JavaScript 实例
基础 JavaScript 实例
27 1
|
3月前
|
JavaScript 前端开发 API
Node.js 中的 WebSocket 底层实现
Node.js 中的 WebSocket 底层实现
90 0
|
5月前
|
JavaScript 前端开发 网络协议
抖音直播弹幕数据逆向:websocket和JS注入
抖音直播弹幕数据逆向:websocket和JS注入
482 1
|
5月前
|
JavaScript
js之选项卡制作实例
js之选项卡制作实例
38 0
|
6月前
|
设计模式 缓存 JavaScript
js设计模式实例
【7月更文挑战第2天】JavaScript设计模式包含工厂、单例、建造者、抽象工厂和代理模式等,它们是最佳实践和可重用模板,解决创建、职责分配和通信等问题。例如,工厂模式封装对象创建,单例确保全局唯一实例,建造者模式用于复杂对象构建,抽象工厂创建相关对象集合,而代理模式则控制对象访问。这些模式提升代码质量、可读性和灵活性,是高效开发的关键。
46 0
|
7月前
|
前端开发 JavaScript 容器
程序技术好文:纯原生javascript下拉框表单美化实例教程
程序技术好文:纯原生javascript下拉框表单美化实例教程
128 0