聊天室和弹幕的js实现感觉

var hasLastCheckReturned = true;

    var lastCheckedTime = 0;

    setTimeout(function(){

     if(!hasLastCheckReturned){

     return; // 上次还没返回结果。放弃这次请求。

     }

     var xhr = new XMLHttpRequest();

     xhr.onreadystatechange = function(){

     if(xhr.readyState === 4){

     if(xhr.responseCode === 200){

     // 解析弹幕

     var danmakuList = yourFormatParser(xhr.responseText);

     for(var i = 0; i < danmakuList.length; i++){

     CM.insert(danmakuList[i]); // 把增量弹幕每一个都插入

     };

     lastCheckedTime = Date.now(); // 更新上次检测的时间

     hasLastCheckReturned = true;

     } else {

     // 可能出了问题

     hasLastCheckReturned = true;

     }

     }

     };

     xhr.open('GET', 'http://yoururl/somevideoid/?from=' + lastCheckedTime, true); // 告诉服务器上次检查的时间,来获取增量

     xhr.send(); // 发送请求

     hasLastCheckReturned = false;

    }, 3000); // 每3s检查新的弹幕

    

以及:

 

    // 基于 socket.io 和 JQuery来简化代码

    

    var socket = io(); //开启流

    

    socket.on('danmaku', function(data){

     // 当遇到 danmaku 事件,就把推送来的弹幕推送给 CCL

     var danmaku = yourFormatParser(data);

     CM.insert(danmaku);

    });

    

    $('#send-danmaku-btn').click(function(){

     //当按了发送弹幕的按钮

     var data = {

     "text":"获取信息。。"

     ...

     };// 通过UI获取新弹幕的信息

    

     //包装并发射弹幕

     socket.emit('send-danmaku', JSON.stringify(yourFormatPackager(data));

    

     //清除 UI 文字部分

     $('#send-danmaku-field').value("");

    });

加好友 1098271199   一起交流讨论吧 

你可能感兴趣的:(聊天室和弹幕的js实现感觉)