Mercurial > eldonilo > lightstring
diff websocket.js @ 98:6ec16b3e9cfc
improvements on the websocket transport
author | Sonny Piers <sonny.piers@gmail.com> |
---|---|
date | Tue, 12 Jun 2012 19:42:49 +0200 |
parents | 11e38a9bfe38 |
children |
line wrap: on
line diff
--- a/websocket.js +++ b/websocket.js @@ -5,7 +5,7 @@ this.service = aService; }; Lightstring.WebSocketConnection.prototype = new EventEmitter(); - Lightstring.WebSocketConnection.prototype.connect = function() { + Lightstring.WebSocketConnection.prototype.open = function() { // Standard if (typeof(WebSocket) === 'function') this.socket = new WebSocket(this.service, 'xmpp'); @@ -19,25 +19,33 @@ else return; //TODO: error - var Conn = this; + var that = this; this.socket.addEventListener('open', function() { - //FIXME: Opera/Safari WebSocket implementation doesn't support sub-protocol mechanism. - //if (this.protocol !== 'xmpp') - //return; //TODO: error - Conn.emit('open') + //FIXME: Opera/Safari WebSocket implementation doesn't support sub-protocol mechanism. + //if (this.protocol !== 'xmpp') + //return; //TODO: error + that.emit('open'); + + var stream = Lightstring.stanzas.stream.open(that.jid.domain); + this.socket.send(stream); + var stanza = { + XML: stream + }; + that.emit('out', stanza); }); this.socket.addEventListener('error', function(e) { - Conn.emit('disconnecting', e.data); + that.emit('disconnecting', e.data); //TODO: error }); this.socket.addEventListener('close', function(e) { - Conn.emit('disconnected', e.data); + that.emit('disconnected', e.data); }); this.socket.addEventListener('message', function(e) { - Conn.emit('stanza', e.data); + that.emit('in', e.data); }); - }, + }; Lightstring.WebSocketConnection.prototype.send = function(aStanza) { this.socket.send(aStanza); - } + that.emit('out', aStanza); + }; })(); \ No newline at end of file