docs: function (url, callback) {
  		if (_websocket) {
  			_websocket.close();
  			_websocket = null;
  		}
  		var ws = _websocket = new WebSocket(url || DEFAULT_URL);
  		ws.onopen = function (event) {
  			trigger("open", event);
  		};
  		ws.onerror = function (event) {
  			trigger("error", event);
  		};
  		ws.onclose = function (event) {
  			trigger("close", event);
  		};
  		var handler = function (event) {
  			reset_idle_ping_timer();
  			var msg = JSON.parse(event.data);
  			console.log("Coinfloor >>", msg);
  			if ("tag" in msg) {
  				var handler = _result_handlers[msg.tag];
  				delete _result_handlers[msg.tag];
  				if (handler) {
  					handler(msg);
  				}
  				else if (handler === undefined) {
  					console.error("Coinfloor:", msg);
  				}
  			}
  			else if ("notice" in msg) {
  				trigger(msg.notice, msg);
  			}
  		};
  		ws.onmessage = function (event) {
  			var msg = JSON.parse(event.data);
  			_server_nonce = atob(msg.nonce);
  			this.onmessage = handler;
  			handler(event);
  			if (callback) {
  				callback(msg);
  			}
  		};
  	}