Skip to content

Instantly share code, notes, and snippets.

@sunng87
Created December 13, 2011 10:07
Show Gist options
  • Save sunng87/1471511 to your computer and use it in GitHub Desktop.
Save sunng87/1471511 to your computer and use it in GitHub Desktop.
clojurescript, nodejs and slacker
(ns cljs-demo.socket
(:require [cljs.nodejs :as node]))
(def net (node/require "net"))
(declare client)
(defn send-data []
(let [version 3
packet-type 0
content-type 1
fname "timestamp"
data "[]"
size (+ 1 1 1 2 (count fname) 4 (count data))
buffer (js/Buffer. size)]
(.writeInt8 buffer version 0)
(.writeInt8 buffer packet-type 1)
(.writeInt8 buffer content-type 2)
(.writeUInt16BE buffer (count fname) 3)
(.write buffer fname 5)
(.writeUInt32BE buffer (count data) (+ 5 (count fname)))
(.write buffer data (+ 9 (count fname)))
(.write client buffer)))
(defn recv-data [d]
(let [buffer (js/Buffer. d)]
(println (.toString buffer "UTF8" 8)))
(.end client))
(defn main [& _]
(def client (.createConnection net 2104))
(.on client "connect" send-data)
(.on client "data" recv-data))
(set! *main-cli-fn* main)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment