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
  • 将这些值附加到"上一个"one_answers"下一个"按钮

代码:

$("#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);
});

相关内容

  • 没有找到相关文章

最新更新