Socket.IO 中設(shè)置了定時器 定時器定時60s向客戶端發(fā)送信息 定時器有時候會自動停止,而客戶端部分會發(fā)送 載入頁面時與 ws://127.0.0.1:2222/socket.io/?EIO=3&transport=websocket&sid=6e1428c5b860d641000aedfc 的連接被中斷
然后一直發(fā)送get http://127.0.0.1:2222/socket.io/ 如圖
不知為何
就是我定時器里面執(zhí)行的代碼業(yè)務(wù)有問題是嗎?
服務(wù)端代碼:
$sender_io = new SocketIO(2222);
// 客戶端發(fā)起連接事件時,設(shè)置連接socket的各種事件回調(diào)
$sender_io->on('connection', function($socket){
// 當(dāng)客戶端發(fā)來登錄事件時觸發(fā)
$socket->on('login', function ()use($socket) {
global $Game;
$send = $Game->start();
$socket->emit('select2m', "{$send}");
});
// 當(dāng)客戶端斷開連接是觸發(fā)(一般是關(guān)閉網(wǎng)頁或者跳轉(zhuǎn)刷新導(dǎo)致)
$socket->on('disconnect', function () use($socket) {
if (!isset($socket->uid)) {
return;
}
});
});
$sender_io->on('workerStart', function() {
Timer::add(60, function()
{ global $Game,$sender_io;
echo "ready".date('y-m-d h:i:s',time())."\r\n";
$send = $Game->start();
$sender_io->emit('select2m', "{$send}");
echo "sendOk".date('y-m-d h:i:s',time())."\r\n";
});
});
客戶端代碼:
$(document).ready(function () {
// 連接服務(wù)端
var socket = io('http://'+document.domain+':2222');
// 連接后登錄
socket.on('connect', function(){
。。。。。。。。
socket.on('select2m', function(online_stat){
var reg=/U/g;
online_stat = online_stat.replace(reg,"<br/>");
$('#select2m').html(online_stat)
var d = new Date();
var sec = d.getSeconds();
console.log(sec);
});