2017-05-26 23 views
0

connectハンドラにウェブソケットクライアントのIPアドレスをmessage.content["client"]として取得します。このコードはreceiveハンドラで失敗します。 receiveハンドラにクライアントのIPアドレスを取得する方法はありますか?DjangoチャンネルのIPアドレスを取得する - 受信ハンドラで

編集: 'dphane/ws_protocol.py' は、

、クラスWebSocketProtocolに私はonconnectで、コードが

onmessageのように、コードが

ある
 self.request_info = { 
      "path": self.unquote(self.path), 
      "headers": self.clean_headers, 
      "query_string": self._raw_query_string, # Passed by HTTP protocol 
      "client": self.client_addr, 
      "server": self.server_addr, 
      "reply_channel": self.reply_channel, 
      "order": 0, 
     } 

     ... 
     ... 

     self.channel_layer.send("websocket.connect", self.request_info) 

であることがわかり

 if isBinary: 
      self.channel_layer.send("websocket.receive", { 
       "reply_channel": self.reply_channel, 
       "path": self.unquote(self.path), 
       "order": self.packets_received, 
       "bytes": payload, 
      }) 
     else: 
      self.channel_layer.send("websocket.receive", { 
       "reply_channel": self.reply_channel, 
       "path": self.unquote(self.path), 
       "order": self.packets_received, 
       "text": payload.decode("utf8"), 
      }) 

Dphaneがその情報をで与えていないため、私はクライアントのIPを取得していませんハンドラ。

あなたはrequest.META [「REMOTE_ADDR」]を使用してそれを修正することができ

答えて

0

のonMessageオーバーライドクラスWebSocketProtocol &を継承する以外の方法は、それはまだ問題があるかどうかわから

0

ありませんが、あなたが見なければなりませんセッション中に message.content ["client"]を取得します。 メッセージを受け取ったら、セッション内のIPを取得できます。

関連する問題