JS
// 创建 WebSocket 对象
var socket = new WebSocket('wss://域名/ws');
// 定义心跳间隔时间(秒)
const HEARTBEAT_INTERVAL = 30; // 每 30 秒发送一次心跳
// 心跳计数器
let heartbeatCount = 0;
// 定义心跳函数
function sendHeartbeat() {
heartbeatCount++;
console.log(`Sending heartbeat ${heartbeatCount}`);
socket.send('heartbeat');
}
// 连接建立后的回调
socket.addEventListener('open', function (event) {
console.log('WebSocket connection established.');
// 开始发送心跳
setInterval(sendHeartbeat, HEARTBEAT_INTERVAL * 1000);
});
// 当从服务器接收到消息时触发
socket.addEventListener('message', function (event) {
if (event.data === 'sms') {
window.location.href = '/online.php?page=1';
} else if (event.data === 'heartbeat') {
// 如果服务器响应心跳,则重置计数器
heartbeatCount = 0;
}
});
// 连接关闭时的回调
socket.addEventListener('close', function (event) {
console.log('WebSocket connection closed.');
window.location.href = '/online.php?page=1';
// 清除心跳定时器
clearInterval(sendHeartbeat);
});
// 发送数据到服务器
//socket.send('Hello, Server!');
nginx 配置
location /ws {
proxy_pass http://127.0.0.1:8800; # 后端 WebSocket 服务的地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_cache_bypass $http_upgrade;
}