From 4605a0eceb71ba35d8d6f625e9c3f07ff4568060 Mon Sep 17 00:00:00 2001 From: ngn Date: Tue, 26 Aug 2014 20:58:40 +0100 Subject: [PATCH] sends an event to the server --- a.coffee | 33 ++++++++++++++++++++++++++++----- index.coffee | 26 +++++++++++++++++++------- 2 files changed, 47 insertions(+), 12 deletions(-) diff --git a/a.coffee b/a.coffee index 797162c2..d357f09a 100755 --- a/a.coffee +++ b/a.coffee @@ -29,8 +29,8 @@ require('socket.io').listen(server).on 'connection', (socket) -> console.info 'browser connected' client = require('net').connect {host: '127.0.0.1', port: 4502}, -> console.info 'interpreter connected' - toInterpreter = (s) -> console.info 'to interpreter: ' + JSON.stringify(s)[..100]; client.write rideMsg s - toBrowser = (m...) -> console.info 'to browser: ' + JSON.stringify(m)[..100]; socket.emit m... + toInterpreter = (s) -> console.info 'to interpreter: ' + JSON.stringify(s)[..1000]; client.write rideMsg s + toBrowser = (m...) -> console.info 'to browser: ' + JSON.stringify(m)[..1000]; socket.emit m... q = Buffer 0 # a buffer for data received from the server client.on 'data', (data) -> @@ -38,7 +38,7 @@ require('socket.io').listen(server).on 'connection', (socket) -> while q.length >= 4 and (n = q.readInt32BE 0) <= q.length m = '' + q[8...n] q = q[n..] - console.info 'from interpreter: ' + JSON.stringify(m)[..100] + console.info 'from interpreter: ' + JSON.stringify(m)[..1000] if /^SupportedProtocols=/.test m # ignore else if /^UsingProtocol=/.test m @@ -57,12 +57,20 @@ require('socket.io').listen(server).on 'connection', (socket) -> toBrowser 'prompt' else if /^/.test m toBrowser 'add', b64d m.replace /^[^]*([^]*)<\/Log>[^]*$/, '$1' + else if /^/.test m + name = b64d m.replace /^[^]*([^]*)<\/name>[^]*$/, '$1' + text = b64d m.replace /^[^]*([^]*)<\/text>[^]*$/, '$1' + toBrowser 'open', name, text else console.info 'unrecognised' return + onevent = socket.onevent + socket.onevent = (packet) -> + console.info 'from browser: ' + JSON.stringify(packet.data)[..1000] + onevent.apply socket, [packet] + socket.on 'exec', (s) -> - console.info 'from browser: ' + JSON.stringify ['exec', s] toInterpreter """ @@ -72,11 +80,26 @@ require('socket.io').listen(server).on 'connection', (socket) -> """ + socket.on 'edit', (s, p) -> # s:current line p:cursor position in s + toInterpreter """ + + + Edit + 0 + + + #{b64 s} + #{p} + 0 + + + + """ + toInterpreter 'SupportedProtocols=1' toInterpreter 'UsingProtocol=1' toInterpreter 'Identify0RIDE.EXE0' toInterpreter 'Connect0' - client.on 'end', -> console.info 'interpreter disconnected'; socket.emit 'end' socket.on 'disconnect', -> console.info 'browser disconnected'; client.end() diff --git a/index.coffee b/index.coffee index d8c74523..b790856e 100644 --- a/index.coffee +++ b/index.coffee @@ -1,15 +1,23 @@ jQuery ($) -> + debug = 1 + socket = io() - send = (a...) -> console.info 'send:', a...; socket.emit a... - recv = (x, f) -> socket.on x, (a...) -> console.info 'recv:', x, a...; f a... - recv 'add', (s) -> + if debug + {emit, onevent} = socket + socket.emit = (a...) -> console.info 'send:' + JSON.stringify(a)[..1000]; emit.apply socket, a + socket.onevent = (packet) -> console.info 'recv:' + JSON.stringify(packet.data)[..1000]; onevent.apply socket, [packet] + + socket.on 'add', (s) -> cm.replaceRange s, line: cm.lineCount() - 1, ch: 0 - recv 'prompt', -> + socket.on 'prompt', -> cm.replaceRange ' ', line: cm.lineCount() - 1, ch: 0 cm.setCursor cm.lineCount() - 1, 6 + socket.on 'open', (name, text) -> + # todo + cm = CodeMirror document.getElementById('session'), autofocus: true extraKeys: @@ -17,7 +25,10 @@ jQuery ($) -> l = cm.lineCount() - 1 s = cm.getLine l cm.replaceRange '', {line: l, ch: 0}, {line: l, ch: s.length} - send 'exec', s + '\n' + socket.emit 'exec', s + '\n' + 'Shift-Enter': -> + c = cm.getCursor() + socket.emit 'edit', cm.getLine(c.line), c.ch cm.setCursor 0, 6 # language bar @@ -64,5 +75,6 @@ jQuery ($) -> $(window).resize(-> cm.setSize null, $(window).height() - 4 - $('#lbar').height()).resize() - window.socket = socket - window.cm = cm + if debug + window.socket = socket + window.cm = cm