diff --git a/experiments/app.js b/experiments/app.js new file mode 100644 index 0000000..8beb129 --- /dev/null +++ b/experiments/app.js @@ -0,0 +1,16 @@ +var app = require('express')(); +var server = require('http').Server(app); +var io = require('socket.io')(server); + +server.listen(9000); + +app.get('/', function (req, res) { + res.sendFile(__dirname + '/index.html'); +}); + +io.on('connection', function (socket) { + socket.emit('news', { hello: 'world' }); + socket.on('my other event', function (data) { + console.log(data); + }); +}); diff --git a/experiments/client0.py b/experiments/client0.py new file mode 100644 index 0000000..fe849a5 --- /dev/null +++ b/experiments/client0.py @@ -0,0 +1,16 @@ +class SocketIO(object): + + def __init__(self, host, port): + pass + + def on(self, event, callback): + pass + + +def on_news(self, data): + print(data) + self.emit('my other event', {'my': 'data'}) + + +s = SocketIO('localhost', 9000) +s.on('news', on_news) diff --git a/experiments/client1.py b/experiments/client1.py new file mode 100644 index 0000000..c2c6290 --- /dev/null +++ b/experiments/client1.py @@ -0,0 +1,52 @@ +import requests + + +def get_packets(content): + packets = [] + index = 0 + content_length = len(content) + while index < content_length: + index, packet_length = read_packet_length(content, index) + index, packet = read_packet(content, index, packet_length) + packets.append((packet[0], packet[1:])) + return packets + + +def read_packet_length(content, index): + while ord(content[index]) != 0: + index += 1 + index += 1 + packet_length_string = '' + while ord(content[index]) != 255: + packet_length_string += str(ord(content[index])) + index += 1 + return index, int(packet_length_string) + + +def read_packet(content, index, packet_length): + while ord(content[index]) == 255: + index += 1 + packet = content[index:index + packet_length] + return index + packet_length, packet + + +base_url = 'http://localhost:9000' +session = requests.Session() +# Establish engine.io connection +response = session.get( + base_url + '/socket.io/?EIO=3&transport=polling&t=1416156610842-0') +packets = get_packets(response.content) +for packet_type, packet in packets: + print packet_type, packet +packet_type, packet = packets[0] +import json +packet_json = json.loads(packet) +print packet_json +print packet_json['pingInterval'] +print packet_json['pingTimeout'] +print packet_json['sid'] +# Establish socket.io connection +# Receive socket.io event +# Send socket.io event +# Send socket.io ping +# Receive socket.io pong diff --git a/experiments/index.html b/experiments/index.html new file mode 100644 index 0000000..90f066c --- /dev/null +++ b/experiments/index.html @@ -0,0 +1,8 @@ + + diff --git a/experiments/interpretation.log b/experiments/interpretation.log new file mode 100644 index 0000000..2afb8e2 Binary files /dev/null and b/experiments/interpretation.log differ diff --git a/experiments/proxy.js b/experiments/proxy.js new file mode 100644 index 0000000..4dec919 --- /dev/null +++ b/experiments/proxy.js @@ -0,0 +1,29 @@ +var proxy = require('http-proxy').createProxyServer({ + target: {host: 'localhost', port: 9000} +}); +var server = require('http').createServer(function(req, res) { + console.log('[REQUEST] ' + req.url); + if (req.method == 'POST') { + var body = ''; + req.on('data', function (data) { + body += data; + }); + req.on('end', function () { + print_body('[REQUEST.BODY] ', body); + }); + } + var _write = res.write; + res.write = function(data) { + print_body('[RESPONSE.BODY] ', data); + _write.call(res, data); + } + proxy.web(req, res); +}); +function print_body(header, body) { + var text = String(body); + console.log(header + text); + for (var i = 0; i < text.length; i++) { + console.log('body[%s] = %s = %s', i, text[i], text.charCodeAt(i)); + } +} +server.listen(8000); diff --git a/experiments/proxy.log b/experiments/proxy.log new file mode 100644 index 0000000..45d0872 Binary files /dev/null and b/experiments/proxy.log differ