def __init__(self): self.socket_io = SocketIO("socketio.mtgox.com", "socket.io", "1", "?Currency=USD") self.socket_io.EVENT_CONNECTED_SOCKETIO.subscribe(self.on_connected) self.socket_io.EVENT_DISCONNECTED_SOCKETIO.subscribe(self.on_disconnected) self.socket_io.EVENT_CONNECTED_ENDPOINT.subscribe(self.on_connected_mtgox) self.socket_io.EVENT_JSON_MESSAGE.subscribe(self.on_json_message) self.EVENT_TRADE = Event() self.EVENT_TICKER_USD = Event() self.EVENT_DEPTH_USD = Event() self.socket_io.start() self.trade = "dbf1dee9-4f2e-4a08-8cb7-748919a71b21" #Trades self.ticker = "d5f06780-30a8-4a48-a2f8-7ed181b4a13f" #Ticker USD self.depth = "24e67e0d-1cad-4cc0-9e7a-f8523ef460fe" #Depth USD
class MtGoxStreaming(): def __init__(self): self.socket_io = SocketIO("socketio.mtgox.com", "socket.io", "1", "?Currency=USD") self.socket_io.EVENT_CONNECTED_SOCKETIO.subscribe(self.on_connected) self.socket_io.EVENT_DISCONNECTED_SOCKETIO.subscribe(self.on_disconnected) self.socket_io.EVENT_CONNECTED_ENDPOINT.subscribe(self.on_connected_mtgox) self.socket_io.EVENT_JSON_MESSAGE.subscribe(self.on_json_message) self.EVENT_TRADE = Event() self.EVENT_TICKER_USD = Event() self.EVENT_DEPTH_USD = Event() self.socket_io.start() self.trade = "dbf1dee9-4f2e-4a08-8cb7-748919a71b21" #Trades self.ticker = "d5f06780-30a8-4a48-a2f8-7ed181b4a13f" #Ticker USD self.depth = "24e67e0d-1cad-4cc0-9e7a-f8523ef460fe" #Depth USD def on_connected(self, event): self.socket_io.connect("mtgox") def on_disconnected(self, event): log.info("Disconnected") def on_connected_mtgox(self, event): log.info( "Mtgox Connected") self.socket_io.send_json_message("/mtgox", '{"channel":"dbf1dee9-4f2e-4a08-8cb7-748919a71b21", "op":"subscribe"}') self.socket_io.send_json_message("/mtgox", '{"channel":"d5f06780-30a8-4a48-a2f8-7ed181b4a13f", "op":"subscribe"}') self.socket_io.send_json_message("/mtgox", '{"channel":"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe", "op":"subscribe"}') def on_json_message(self, event): message = json.loads(event.data) if 'private' in message: private = message['private'] #ticker, trade, depth if private=='trade': self.EVENT_TRADE.fire(message=message) elif private=='ticker': self.EVENT_TICKER_USD.fire(message=message) elif private=='depth': self.EVENT_DEPTH_USD.fire(message=message) log.debug(event.endpoint + " " + str(message)) def on_subscribed(self, channel, message): channel = message['channel'] if channel==self.trade: channel_name = 'trade' elif channel==self.ticker: channel_name = 'ticker' elif channel==self.depth: channel_name = 'depth' else: channel_name = 'unknown' log.info( "subscribed to channel " + channel_name)