Created
December 13, 2011 10:07
-
-
Save sunng87/1471511 to your computer and use it in GitHub Desktop.
clojurescript, nodejs and slacker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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