2017-09-23 10 views
0

私は、Haskell用のWebSocketライブラリを探していました。つまり、Wussです。使用できなくなる可能性があるものが見つかりました。 WebSocketを閉じるべきですか?

最新

は、 Control.Exception.Bracketを使用し、 は常に接続を閉じ( 04ab5d3f72)をコミット。

Wuss.hs#L163

runSecureClientWithConfig host port path config options headers app = do 
    context <- Connection.initConnectionContext 
    Exception.bracket 
     (Connection.connectTo context (connectionParams host port)) 
     Connection.connectionClose  -- <-- This line closes the connection 
     (\connection -> do 
      stream <- 
       Stream.makeStream (reader config connection) (writer connection) 
WebSockets.runClientWithStream stream host path options headers app) 

私が間違えていないよ場合は、WebSocketをだとして、この機能は、オープン接続を維持するべきではない(または何かがエラーが発生した場合にのみ、それを閉じて)?

私は、このようなバグを持っているために、最近のコミット(2017)とライブラリのsurpirsedだろうと私は何かが足りないかもしれないので、私はHaskellの中にも、WebSocketをには専門家だ...

答えて

2

のアイデアこの機能はappを実行していて、appが終了すると、そのリソースは回復されます。

通常、appは、ポートで接続を待機し、到着したら適切なことを行います。したがって、ポートを閉じてリソースを回復することは正しいことです。 previous versionはこれを実行せず、リソースリークを引き起こしました。

+1

多分私は「物」という言葉をあまりにも使用しています。 –

+0

ああ、意味があります。 インターネット上の古いサンプルコードの中には、この関数を使用してワーカーをフォークしてリターンするだけのもの(新しいWussバージョンではソケットを閉じる)がありました。私はサンプルが間違った方法でこの関数を使い始めていたと思います。 –

+1

@島本大輔、そうですね。 "runSecureClientWithConfig ... $ fork ..."ではなく "fork $ runSecureClientWithConfig ..."でなければなりません。 –

関連する問題