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

时间:2016-05-11 16:27:25

标签: haskell websocket haskell-snap-framework

我正在使用Network.WebSocket库。我在WS.requestHeaders . WS.pendingRequest上尝试了PendingConnection来获取连接请求信息。但是,它似乎没有客户端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(我在Snap monad中使用runWebSocketsSnap)运行时,获取“客户端IP”信息的好方法是什么。我想在出错的情况下记录它。

1 个答案:

答案 0 :(得分:2)

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

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