在 websocket 库中获取客户端 IP 地址

Getting client IP address in websocket library

我正在使用 Network.WebSocket 库。我在 PendingConnection 上尝试 WS.requestHeaders . WS.pendingRequest 来获取连接请求信息。但是,它似乎没有客户端 IP 信息,只有 Host 键中的服务器 IP 信息。下面是一个示例输出:

[("Upgrade","websocket"),("Sec-WebSocket-Extensions","permessage-deflate; 
client_max_window_bits"),("Sec-WebSocket-Key","<taken out for SO post>"),
("Connection","Upgrade"),("Sec-WebSocket-Version","13"),("Host","localhost:8080")]

当 运行 Network.Websocket 时获取 "Client IP" 信息的好方法是什么(我 运行 它在 Snap monad 中使用 runWebSocketsSnap).我想记录它以防出错。

runWebSocketsSnap 只是一个常规的 Snap 应用程序,因此您可以使用 rqRemoteAddr 获取远程 IP 地址:

do
  addr <- getsRequest rqRemoteAddr
  runWebSocketsSnap $ \pending -> ...