PageRenderTime 29ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/js/lib/Socket.IO-node/support/node-websocket-client/test/test-unix-send-fd.js

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
JavaScript | 63 lines | 49 code | 12 blank | 2 comment | 0 complexity | e9b409aeaab819dae8f17a867fc2ccf8 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. // Verify that both sides of the WS connection can both send and receive file
  2. // descriptors.
  3. var assert = require('assert');
  4. var fs = require('fs');
  5. var path = require('path');
  6. var sys = require('sys');
  7. var WebSocket = require('../lib/websocket').WebSocket;
  8. var WebSocketServer = require('websocket-server/ws').Server;
  9. var PATH = path.join(__dirname, 'sock.' + process.pid);
  10. var C_MSG = 'Client test: ' + (Math.random() * 100);
  11. var S_MSG = 'Server test: ' + (Math.random() * 100);
  12. var clientReceivedData = false;
  13. var clientReceivedFD = false;
  14. var serverReceivedData = false;
  15. var serverReceivedFD = false;
  16. var wss = new WebSocketServer();
  17. wss.addListener('listening', function() {
  18. var ws = new WebSocket('ws+unix://' + PATH);
  19. ws.addListener('data', function(d) {
  20. assert.equal(d.toString('utf8'), S_MSG);
  21. clientReceivedData = true;
  22. ws.send(C_MSG, 1);
  23. ws.close();
  24. });
  25. ws.addListener('fd', function(fd) {
  26. assert.ok(fd >= 0);
  27. clientReceivedFD = true;
  28. });
  29. });
  30. wss.addListener('connection', function(c) {
  31. c.write(S_MSG, 0);
  32. c._req.socket.addListener('fd', function(fd) {
  33. assert.ok(fd >= 0);
  34. serverReceivedFD = true;
  35. });
  36. c.addListener('message', function(d) {
  37. assert.equal(d, C_MSG);
  38. serverReceivedData = true;
  39. wss.close();
  40. });
  41. });
  42. wss.listen(PATH);
  43. process.addListener('exit', function() {
  44. assert.ok(clientReceivedFD);
  45. assert.ok(clientReceivedData);
  46. assert.ok(serverReceivedFD);
  47. assert.ok(serverReceivedData);
  48. try {
  49. fs.unlinkSync(PATH);
  50. } catch (e) { }
  51. });