国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于微信公眾號(hào)的多房間實(shí)時(shí)彈幕消息系統(tǒng)

Anonymous1 / 444人閱讀

摘要:同時(shí)借助實(shí)現(xiàn)在非接口中推送消息流。每分秒鐘最多的彈幕數(shù)目彈幕數(shù)量過多時(shí)優(yōu)先加載最新的。

項(xiàng)目起始原因

源于數(shù)據(jù)庫課設(shè)和以前的一次突發(fā)奇想。其實(shí)還有其他微信公眾號(hào)的彈幕系統(tǒng),但是我發(fā)現(xiàn)使用體驗(yàn)不佳,因?yàn)槟欠N彈幕系統(tǒng)都是私用,并且只支持同時(shí)進(jìn)行一個(gè)房間的使用。所以便萌生了自己寫一個(gè)的想法。(第一次寫md,有點(diǎn)不會(huì),希望諒解--)

主要技術(shù)點(diǎn)

Redis(結(jié)合socket實(shí)現(xiàn)在非socket中主動(dòng)發(fā)送socket消息)

MySQL(數(shù)據(jù)持久化)

socket.io(實(shí)現(xiàn)消息實(shí)時(shí)推送)

Express(后端主要使用框架)

實(shí)現(xiàn)的主要技術(shù)點(diǎn)和難點(diǎn)

接受微信服務(wù)器的消息推送

微信服務(wù)器推送的消息,我們?cè)贓xpress中通過data數(shù)據(jù)流的形式接受,然后xml轉(zhuǎn)為json格式。即得到我們需要的數(shù)據(jù)。部分代碼如下(getXml為封裝的函數(shù)用于處理數(shù)據(jù)):

//  處理上傳消息請(qǐng)求
let promise = new Promise((resolve,reject) => {
  let buffer = [];
  //監(jiān)聽 data 事件 用于接收數(shù)據(jù)
  req.on("data",chunk => {
      buffer.push(chunk);
  });
  //監(jiān)聽 end 事件 用于處理接收完成的數(shù)據(jù)
  req.on("end",() => {
      let msgXml = Buffer.concat(buffer).toString("utf-8");
      xml.xmltool.getXml(msgXml).then(datas => {
          resolve(JSON.stringify(datas.xml));
      }).catch(e => {
          reject(JSON.stringify(e));
      })
  })
});

websocket(socket.io)

socket.io是已經(jīng)封裝好的一個(gè)庫。我們只需要安裝之后,就可方便的使用。同時(shí)借助Redis實(shí)現(xiàn)在非socket接口中推送socket消息流。需要使用到的模塊主要是:

socket.io

socket.io-redis

socket.io-emitter

部分核心代碼如下(作為一個(gè)模塊導(dǎo)出直接使用):

const redis = require("redis");
const ioRedis = require("socket.io-redis");

// var roomInfo = {};

let ioCreater = function(server) {
    const io = require("socket.io")(server);
    io.on("connection", function (socket) {

        var url = socket.request.headers.referer;
        var splited = url.split("/");
        var roomID = splited[splited.length - 1];   // 獲取房間ID
        // var user = "";
        console.log(socket.request.headers);
        console.log(roomID);
        socket.join(roomID);    // 加入房間

       
        socket.on("disconnect", function(){    //斷開socket連接的時(shí)候觸發(fā)
            console.log("user disconnected");
        });
        socket.on("message", function(){  //接收socket連接消息的時(shí)候觸發(fā)
            console.log("received a message");
        });
        socket.on("connect", function(){  //建立socket連接時(shí)候觸發(fā)
            console.log("connect a socket client");
        });

    });

    io.adapter(ioRedis({host:"127.0.0.1", port:"6379" })); //使用socket.io-adapter設(shè)置緩存依賴
    return io; 
};
 module.exports = ioCreater;

多房間

在使用socket.io的時(shí)候,我們很方便的就可以創(chuàng)建socket.io多房間。我們只需要在socket連接的時(shí)候帶上參數(shù)即可。所以在初始化的時(shí)候,我們需要將房間號(hào)發(fā)到前端,前端拿到之后,創(chuàng)建相應(yīng)的socket連接即可。同時(shí)前端頁面可以直接使用node_modules里面的socket包。

    
    

彈幕實(shí)現(xiàn)

因?yàn)檎n設(shè)有時(shí)間限制的原因,所以沒有自己去手動(dòng)實(shí)現(xiàn)彈幕效果,我直接在github上面找了一個(gè)基于jQuery的彈幕插件。jQuery.danmu.js(體驗(yàn)還不錯(cuò))部分核心代碼如下:



  
    <%= title %>
    
    
    
    
  
  
  
  
寫在最后的話

代碼很粗糙,如果有參考價(jià)值的話,希望多多支持。如果有不懂得地方,請(qǐng)?zhí)岢鰜恚視?huì)盡我全力為您解答的。附上github地址,如果對(duì)您有幫助的話,希望給我一個(gè)小小的star,這是對(duì)我最大的鼓勵(lì)和支持,前端的路很長(zhǎng),我希望自己能堅(jiān)持下去!!共勉

github地址

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/97974.html

相關(guān)文章

  • Web實(shí)時(shí)彈幕原理分析

    摘要:官方地址支持協(xié)議用于實(shí)時(shí)通信和跨平臺(tái)的框架。如實(shí)時(shí)分析系統(tǒng)二進(jìn)制流數(shù)據(jù)處理應(yīng)用在線聊天室在線客服系統(tǒng)評(píng)論系統(tǒng)等。官方地址動(dòng)畫效果是一款優(yōu)雅的網(wǎng)頁彈幕插件支持顯示圖片文字以及超鏈接。 廢話不多說,首先上效果圖。 效果圖 showImg(https://segmentfault.com/img/bVGo0P?w=521&h=635); 用途 搞活動(dòng)、年會(huì)的時(shí)候,在大屏幕上實(shí)時(shí)顯示留言、吐...

    tigerZH 評(píng)論0 收藏0
  • 2016年云巴產(chǎn)品更新合集

    摘要:實(shí)時(shí)彈幕使用云巴,直播平臺(tái)可快速實(shí)現(xiàn)視頻直播中發(fā)送彈幕打賞點(diǎn)贊等實(shí)時(shí)互動(dòng)功能。云巴聊天室支持圖片上傳文件發(fā)送文檔評(píng)論系統(tǒng)正式上線新增搜索功能,我們會(huì)做得更好。 SDK 篇 Android SDK 更新 Release 1.6.3后臺(tái)進(jìn)程相互拉起的特殊版本 Release 1.6.4增加 so 文件 Release 1.8.0支持小米、華為推送,無需注冊(cè)第三方賬號(hào) Release 1....

    CoffeX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<