0

私は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)

この簡単なチャットでは、さまざまなチャネルを使用して、(チャネルごとに)送信されたメッセージを追跡し、ユーザーが最初に接続したときにそれをレンダリングしたいと思います。

その方法のヒントを探しています。

どうもありがとうございます。

4

1 に答える 1

1

メッセージのテーブルを作成し、列の1つがチャットルームの名前またはIDであることを確認して、チャットルームの購読時に最後の10件のメッセージを照会できるようにします。

したがって、ページをレンダリングするとき、データベースから最後のメッセージを取得し、次のメッセージはソケットから取得します。

メッセージを長期間保存したくない場合は、テーブルを定期的に切り捨ててクリーンアップしてください。

于 2012-11-21T00:18:45.873 に答える