我们在message.content["client"]
处理程序中将Web套接字客户端的IP地址作为connect
获取。但是这个代码在receive
处理程序中失败了。有没有办法在receive
处理程序中获取客户端的IP地址?
修改
在' dphane / ws_protocol.py',在课程WebSocketProtocol
中,我在onconnect
中看到,代码是
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)
在onmessage
中,代码为
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"),
})
我们没有获得客户端IP,因为Dphane没有在message
处理程序中提供该信息。
除了继承类WebSocketProtocol&压倒消息
答案 0 :(得分:0)
您可以使用request.META [' REMOTE_ADDR']
进行修复答案 1 :(得分:0)
不确定这是否仍然是一个问题,但你应该考虑获得 message.content [“client”]进入会话。 因此,当您收到消息时,您可以在会话中检索IP。