18

Web ソケット接続を受け入れる http-kit を使用して WebSocket サーバーをセットアップしました。これは、http-kit ドキュメントに示されている基本的な例です。

問題は 、それに接続する Clojure クライアントをどのように作成するかということです。

クライアントはどの Clojure http ライブラリでもかまいませんが、特に気にしません。私はすでに Javascript クライアントについて知っており、Java には Clojure から使用できる API があると信じています。しかし、私が探しているのは、クライアントサーバーの両方で websocket をサポートする Clojure ライブラリです。http-kit コードには、簡単にするものは何もありませんでした。

4

6 に答える 6

11

alephは、サーバーとクライアントの両方で WebSocket をサポートしています。非同期スタイルと aleph のコアとなる抽象化に慣れるまでに時間がかかる場合がありますが、コツをつかめば非常に優れたツールです。

于 2013-05-08T22:33:57.900 に答える
9

Gniazdoは Clojure の WebSocket クライアントです。Jettyのプロトコルの実装をラップします。

于 2013-11-10T09:32:17.837 に答える
9

http-kit のクライアントはまだ WebSocket をサポートしていません (適切な API が思い浮かびません)。Aleph は、こ​​の種のユースケースに適したオプションです。別のオプションはhttp.async.clientです。http-kit のサーバーの websocket 単体テストで使用しました: here

于 2013-05-16T15:48:42.497 に答える
7

このアナウンスによると、http-kit は Web ソケットをサポートしています。http-kit クライアントが提供する非同期機能に縛られていない場合は、clj-httpを使用することもできます。彼らは非常によく似たインターフェースを持っているようです(私はまだclj-httpを使用しています)。


(ns playground.experiments.ws
  (:use aleph.http lamina.core))

(defn ws-client [] (websocket-client {:url "ws://echo.websocket.org:80"}))

(defn echo [message]
  (let [channel (wait-for-result (ws-client) 500)]
    (enqueue channel message)
      (let [echo (wait-for-result (read-channel channel) 500)]
        (close channel)
        echo)))

(echo "Echo me!")
于 2013-05-08T21:24:00.710 に答える
1

基本的な websocket クライアントとサーバーを構築しました。これは Java ソケットを使用し、websocket フレームをラップします。サーバーが通常のソケット接続と Websocket の両方を同時に受け入れることができるという点でユニークです。

http://github.com/viperscape/gulfstream

クライアントコードの例:

(def clienthandler
  (with-conn server
    (send! server "i'm here!")
    (with-data server data (prn "client received" data))
    (prn "client is now disconnected")))

(def ws-conn-details {:host "ws://echo.websocket.org/chat",:handler clienthandler})

(def client-conn (start-client ws-conn-details))
于 2014-02-17T15:38:09.383 に答える