Guest User

Untitled

a guest
Jun 20th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. /* Ismael Celis 2010
  2. Simplified WebSocket events dispatcher (no channels, no users)
  3.  
  4. var socket = new FancyWebSocket();
  5.  
  6. // bind to server events
  7. socket.bind('some_event', function(data){
  8. alert(data.name + ' says: ' + data.message)
  9. });
  10.  
  11. // broadcast events to all connected users
  12. socket.send( 'some_event', {name: 'ismael', message : 'Hello world'} );
  13. */
  14.  
  15. var FancyWebSocket = function(url){
  16. var conn = new WebSocket(url);
  17.  
  18. var callbacks = {};
  19.  
  20. this.bind = function(event_name, callback){
  21. callbacks[event_name] = callbacks[event_name] || [];
  22. callbacks[event_name].push(callback);
  23. return this;// chainable
  24. };
  25.  
  26. this.send = function(event_name, event_data){
  27. var payload = JSON.stringify({event:event_name, data: event_data});
  28. conn.send( payload ); // <= send JSON data to socket server
  29. return this;
  30. };
  31.  
  32. // dispatch to the right handlers
  33. conn.onmessage = function(evt){
  34. var json = JSON.parse(evt.data)
  35. dispatch(json.event, json.data)
  36. };
  37.  
  38. conn.onclose = function(){dispatch('close',null)}
  39. conn.onopen = function(){dispatch('open',null)}
  40.  
  41. var dispatch = function(event_name, message){
  42. var chain = callbacks[event_name];
  43. if(typeof chain == 'undefined') return; // no callbacks for this event
  44. for(var i = 0; i < chain.length; i++){
  45. chain[i]( message )
  46. }
  47. }
  48. };
Add Comment
Please, Sign In to add comment