现在的位置: 首页 > nodejs > 正文
socket.io 机制问题
2016年12月07日 nodejs ⁄ 共 2125字 暂无评论
我的代码: 

服务端:var io=socketIo.listen(server,{'log level': 2,'pingTimeout':30000,'pingInterval':1000});

 zqm: pingInterval  pingTimeout  两个参数的意思是    

客户端链接到服务端获取到这两个参数。 客户端获取到参数,来进行执行发包规律。第一个参数ping超时时间。第二个参数是每隔1s发送一个包。

服务端也给客户端发送,客户端也给服务端发送。 如果服务端接受不到客户端发送的包,则超时把客户端断开。

所以服务端触发disconnect的时间=  手机啥时候开始不发包+  pingTimeout

对于安卓手机。  后台运行定时发送心跳包,有的手机后台运行60s内可以发送,超过60s就不会发送成功。 60s后 服务端如果接受不到客户端发送的包超过60s 则会触发服务端的disconnect机制。

有的安卓手机后台运行的时间可以很长。 时刻在发送数据包。 对于直播,则需要加个定时器50s时把直播关闭。

客户端:

var socket =io.connect('http://*********:3000',{'timeout': 300000, 'reconnection': true,'reconnectionDelayMax':30000,'reconnectionDelay':1000});

zqm:

reconnection  是客户端断开,是不是自动重连 。
 reconnectionDelayMax  重连的间隔时间。
reconnectionDelay  重连的时间。
 
var socketio = require('socket.io'),
    http     = require('http');

var server = http.createServer(function(req, res) {
	res.writeHead(200, {
		'Content-type': 'text/html'
	});

	res.end();
}).listen(19967, function() {
	console.log('服务开启19967');
});

var io = socketio.listen(server,{
	pingTimeout: 20000,
  	pingInterval: 1000
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  console.log('connection')
  socket.on('day', function (data) {
    console.log(data);
  });
// 客户端一离开就会触发
  socket.on('disconnect', function () {
    console.log('disconnect2')
  });



});

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<button id="button1" onclick="send()">按钮1</button>

<script src="./socket.io-1.4.5.js"></script>
<script>
    //var socket = io.connect('http://localhost:7110/?uip=%3A%3Affff%3A127.0.0.1',{
   /* var socket = io.connect('http://192.168.1.134:19967',{
        reconnection: false, transports: ['websocket']
    });*/

    var socket = io.connect('http://192.168.1.134:19967',{'timeout': 20000,
        'reconnection': true,'reconnectionDelayMax':10000,'reconnectionDelay':1000});
    socket.on('con', function (data) {
        console.log("news");
        console.log(data);

    });
    socket.on('socket.ip', function (data) {
        console.log("socket.ip");
        console.log(data);
        socket.emit('my other event', { my: 'data' });
    });
    socket.on('news', function (data) {
        console.log("news");
        console.log(data);

    });
    socket.on('disconnect', function (data) {
        console.log("disconnect");
        console.log(data);


    });

    function  send() {
        socket.emit('day', { my: 'data' });
        console.log("点击");
    }
</script>




</body>
</html>

给我留言

您必须 [ 登录 ] 才能发表留言!

×