My server looks like this and its been working for me for the past few
months without issue:

(defroutes ws-routes
  (GET  "/cmd/chsk" req (ring-ajax-get-or-ws-handshake req))
  (POST "/cmd/chsk" req (ring-ajax-post                req)))





(defn run

  [& [routes]]

  (let [site      (http-handler/site (compojure/routes ws-routes routes))
        webserver (httpkit/run-server site {:port 3002})
        {:keys [ch-recv send-fn ajax-post-fn ajax-get-or-ws-handshake-fn
                connected-uids]} (sente/make-channel-socket! {})]
    (def ring-ajax-post                ajax-post-fn)
    (def ring-ajax-get-or-ws-handshake ajax-get-or-ws-handshake-fn)
    (def ch-chsk                       ch-recv) ; ChannelSocket's
receive channel
    (def chsk-send!                    send-fn) ; ChannelSocket's send API fn
    (def connected-uids                connected-uids) ; Watchable,
read-only atom
    (def server webserver)
    (sente/start-chsk-router-loop! sente-message-router ch-chsk)
    webserver))



Where sente-message-router is a function that receives messages from the
client.

In my actual codebase, there is a little more additional code for setting
up client-id's and CSRF tokens too.

On 26 July 2014 05:33, Timothy Washington <twash...@gmail.com> wrote:

> Hi all,
>
> I'm using [com.taoensso/sente "0.15.1"
> <https://github.com/ptaoussanis/sente>], and having trouble connecting
> the client to the server. I'm sure it's something simple, but not obvious,
> as this is taken directly from the examples on sente's github page. Anyone
> seen and fixed the error in fig.1? The clojurescript and clojure code are
> in fig 2 and 3 respectively.
>
>
> WebSocket connection to 'ws://172.28.128.5:58269/chsk' failed: Error
> during WebSocket handshake: Unexpected response code: 404
>  WebSocket error: [object Event] VM1707:1689
>  Chsk is closed: will try reconnect (8). VM1707:1689
>
> fig.1 - Chrome network error message
>
> (ns my.ns
>   (:require-macros
>    [cljs.core.match.macros :refer (match)] ; Optional, useful
>    [cljs.core.async.macros :as asyncm :refer (go go-loop)])
>   (:require
>    ;;[clojure.browser.repl :as repl]
>    [cljs.core.match] ; Optional, useful
>    [cljs.core.async :as async :refer (<! >! put! chan)]
>    [taoensso.sente :as sente :refer (cb-success?)]))
>
>
> (let [{:keys [chsk ch-recv send-fn state]}
>       (sente/make-channel-socket! "/chsk" {:type :auto})]
>
>   (def chsk       chsk)
>   (def ch-chsk    ch-recv)
>   (def chsk-send! send-fn)
>   (def chsk-state state))
>
> (defn one []
>   (chsk-send! [:some/request-id {:name "Rich Hickey" :type "Awesome"}]))
>
>
> *fig.2 - my.cljs *
>
>
> (ns my.http.ns
>   (:require [compojure.core :refer :all]
>             ...
>
>             ;; Sente stuff
>             [clojure.core.match :as match :refer (match)] ; Optional,
> useful
>             [clojure.core.async :as async :refer (<! <!! >! >!! put! chan
> go go-loop)]
>             [taoensso.sente :as sente]))
>
>
> (let [{:keys [ch-recv send-fn ajax-post-fn ajax-get-or-ws-handshake-fn]}
>       (sente/make-channel-socket! {})]
>
>   (def ring-ajax-post                ajax-post-fn)
>   (def ring-ajax-get-or-ws-handshake ajax-get-or-ws-handshake-fn)
>   (def ch-chsk                       ch-recv)
>   (def chsk-send!                    send-fn))
>
> ...
>
> (defn create-approutes [project-config browserrepl]
>
>   (defroutes app-routes
>
>     ;; Sente stuff
>     (GET  "/chsk" req (ring-ajax-get-or-ws-handshake req)) ; tried both
> ring-ajax-get-or-ws-handshake and *#'*ring-ajax-get-or-ws-handshake
>     (POST "/chsk" req (ring-ajax-post                req))        ; same
> here for trying both
>
>
>     (GET "/" []
>          (-> (ring-resp/response (with-browser-repl "index.html"
> browserrepl))
>              (ring-resp/content-type "text/html")))
>
>     (route/resources "/" {:root "resources/public/"})
>     (route/not-found "Not Found")))
>
> *fig.3 - my.clj *
>
>
> Tim Washington
> Interruptsoftware.com <http://interruptsoftware.com>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to