簡體   English   中英

Node.js WebSocket分頁

[英]nodejs websocket pagination

我有一個使用javascript的接口,該接口請求使用nodejs連接到Websocket。 WebSocket經常將其產生的實時數據發送到接口。

什么是進行界面分頁的最佳方法或最佳實踐。

它不像我將服務器推送到接口的所有數據附加在一起,數據是通過websocket一對一發送的,所以它有點像日志記錄。

這是一些代碼示例

connection.onmessage = function (message) {
  console.log(message.data);
  //var json = JSON.parse(message.data.text);
  content.prepend('<p><span style="color:red"></span> @ '+ message.data + '</p>');
  console.log(message.data.text);     
};

任何參考呢? 對不起,英語不好。

這個示例還有其他一些事情,然后只是請求的有關分頁的信息。

  • 在客戶端,我們正在設置listRequest_Message ,並將消息傳遞到服務器的套接字事件。 SessionID僅用於知道要響應的用戶。 UseIndexStart是當前的最小記錄, UseIndexEnd是當前的最大記錄。

     listRequest_Message = [[SessionID], [UseIndexStart], [UseIndexEnd]] 
  • 該示例每頁返回21條記錄

     //Page Back var UseIndexStart = StartIndex - 21 var UseIndexEnd = UseIndexStart + 22 //Page Forward var UseIndexStart = parseInt(StartIndex) + 21; var UseIndexEnd = UseIndexStart + 22; 

服務器應用

  • 更改響應以響應索引之間的記錄。
  • 客戶端調用的套接字事件是動態的,但是我在下面的分頁中包括了一個名為listRequest_news
  • 解析的JSON對象是一個文本文件,其中包含電影,電視節目和常規媒體的列表。

碼:

socket.on('listRequest_news', function(msg, body){
for(var i = 0; i < mediaObj.length; i++){
  var thisobj = mediaObj[i];

  var JSONmsg = JSON.parse(msg[0]);
  var ClientIndex = clientkeyIndex.indexOf(JSONmsg);

  var startindex = msg[1];
  var endindex = msg[2];

  if (i > startindex && i < endindex)
    {
      clientID = parseInt(ClientIndex);
      client[clientID].emit('list_RequestGenericMedia', thisobj);
    }

  clientID = parseInt(ClientIndex);
  client[clientID].emit('list_RequestGenericMedia', thisobj);

}
});

客戶端

  • 存儲所選記錄的StartIndexEndIndex
  • 將這些值附加到上一個和下一個按鈕

碼:

$("#listviewcontrolller_prev").on("click", "", function(event){

var selectedOption = localStorage.getItem('selectedOption')

var StartIndex = $("#prevpage").text();
var EndIndex = $("#nextpage").text();

var UseIndexStart = StartIndex - 21
var UseIndexEnd = UseIndexStart + 22

$("#prevpage").text(UseIndexStart);
$("#nextpage").text(UseIndexEnd);

var SessionID = localStorage.getItem('SocketID')
var listRequest_Message = [[SessionID], [UseIndexStart], [UseIndexEnd]];

$("#newsOutPut").empty();
socket.emit(selectedOption, listRequest_Message);
});

$("#listviewcontrolller_next").on("click", "", function(event){

var selectedOption = localStorage.getItem('selectedOption');

var StartIndex = $("#prevpage").text();
var EndIndex = $("#nextpage").text();

var UseIndexStart = parseInt(StartIndex) + 21;
var UseIndexEnd = UseIndexStart + 22;

$("#prevpage").text(UseIndexStart);
$("#nextpage").text(UseIndexEnd);

var SessionID = localStorage.getItem('SocketID')
var listRequest_Message = [[SessionID], [UseIndexStart], [UseIndexEnd]];

$("#newsOutPut").empty();
socket.emit(selectedOption, listRequest_Message);

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM