跟踪套接字socket.io上发送的消息

时间:2012-11-20 19:45:39

标签: django sockets websocket socket.io gevent

我正在与django.socketio进行聊天。我想跟踪套接字上发送的消息,以便我可以在新用户到来时呈现它。我希望他在到达之前看到发送的信息。

我的代码非常简单:

模板:

      <script>
      var url = window.location.pathname.split('/');
      var id = url[3];
      var socket = new io.Socket();
      socket.connect();
      socket.on('connect', function(context){
      socket.subscribe('channel-' + id)  
      });


      socket.on('message', function(data){
      $('.try').prepend('<div> '+val+' </div>');
       });


    function send(){
    var val = $('#text').val();
    data = val
    socket.send(data);
   };
    </script>

html:

  <form id="form" onsubmit="send(); return false">
  <input type="text" id="text">
  <input type="submit" value="Send">
  </form>

  <div class="try"> </div>

events.py:

  @events.on_message(channel='^channel-')
    def messages(request, socket, context, message):
    socket.send_and_broadcast_channel(message)

在这个简单的聊天中,通过不同的频道,我想跟踪发送的消息(针对每个频道)并在用户首次连接时进行渲染。

我正在寻找有关如何做到这一点的提示。

非常感谢。

1 个答案:

答案 0 :(得分:1)

只需为消息创建一个表格,并确保其中一列是聊天室名称或ID,这样您就可以在订阅聊天室时查询最后10条消息。

因此,在呈现页面时,您将从数据库获取最后一条消息,而下一条消息来自套接字。

如果您不希望长时间保存的消息只是定期截断表格以进行清理。