-
Notifications
You must be signed in to change notification settings - Fork 0
/
webSocket.js
51 lines (40 loc) · 1.17 KB
/
webSocket.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var Gaffa = require('gaffa');
function createSocket(behaviour){
if(!window.WebSocket){
console.warn('This browser does not support Sockets');
return;
}
if(!behaviour.url.value || !behaviour.connect.value){
return;
}
if(behaviour.webSocket){
behaviour.webSocket.close();
}
var webSocket = behaviour.webSocket = new window.WebSocket(behaviour.url.value);
webSocket.onmessage = function(message){
var data = JSON.parse(message.data);
var scope = {
data: data
};
behaviour.triggerActions('message', scope);
};
webSocket.onopen = function(){
behaviour.triggerActions('open');
};
webSocket.onerror = function(error){
var scope = {
error: error
};
behaviour.triggerActions('error', scope);
};
}
function Socket(){}
Socket = Gaffa.createSpec(Socket, Gaffa.Behaviour);
Socket.prototype.type = 'socket';
Socket.prototype.url = new Gaffa.Property();
// How long to wait before initialising the connection.
Socket.prototype.connect = new Gaffa.Property({
update: createSocket,
value: true
});
module.exports = Socket;