This repository has been archived by the owner on Apr 16, 2018. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathclient_node.coffee
51 lines (44 loc) · 1.89 KB
/
client_node.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
###############################################################################
#
# SageMathCloud: A collaborative web-based interface to Sage, IPython, LaTeX and the Terminal.
#
# Copyright (C) 2014, William Stein
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###############################################################################
###
#
# message=require('message'); c = require('client_node').connect("http://localhost:5000")
#
###
#
# NOTE: Automatic reconnect if the server is restarted does not work with this.
# It *does* work for client_browser.coffee though, which is what matters.
client = require('client')
exports.connect = (url) -> new Connection(url)
class Connection extends client.Connection
_connect: (url, ondata) ->
# TODO!!! Rewrite all this using Primus... https://github.com/primus/primus
conn = require("sockjs-client-ws").create("#{url}/hub") # note -- https is not supported
@_conn = conn
conn.on("connection", () =>
@_last_pong = require('misc').walltime()
@_connected = true
@emit("connected", "websocket")
)
conn.on("data", ondata)
conn.on("error", (err) => @emit("error", err))
conn.on("close", () => @emit("close"))
@_write = (data) -> conn.write(data)