PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/socket.js

https://github.com/juliankrispel/node-chat
JavaScript | 54 lines | 40 code | 12 blank | 2 comment | 0 complexity | 3d9c992bb4597777f1d8839358e99685 MD5 | raw file
  1. var EventEmitter = require('events').EventEmitter,
  2. _ = require('underscore');
  3. var sockets = {};
  4. var Socket = function(server){
  5. this.init(server);
  6. }
  7. _(Socket.prototype).extend(
  8. EventEmitter.prototype, {
  9. init: function(server){
  10. _(this).bindAll('setupEvents', 'sendToClients', 'closeSocket');
  11. this.io = require('socket.io').listen(server);
  12. var that = this;
  13. this.io.sockets.on('connection', function (socket) {
  14. //Store socket in object
  15. sockets[socket.id] = socket;
  16. //Setup events for socket
  17. that.setupEvents(socket);
  18. });
  19. },
  20. closeSocket: function(id){
  21. var socket = sockets[id];
  22. socket.emit('Insufficient Credentials');
  23. socket.disconnect();
  24. delete socket[id];
  25. },
  26. setupEvents: function(socket){
  27. var that = this;
  28. socket.on('user_connected', function(data){
  29. that.emit('user_connected', socket.id, data);
  30. });
  31. socket.on('message_from_user', function(data){
  32. that.emit('message_from_user', socket.id, data);
  33. });
  34. socket.on('disconnect', function () {
  35. that.emit('socket_disconnect', socket.id);
  36. });
  37. },
  38. sendToClients: function(data){
  39. this.io.sockets.emit('message_from_server', data);
  40. }
  41. });
  42. module.exports = Socket;