Guest User

Untitled

a guest
May 31st, 2018
538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. var USERNAME = 'XXXXXX'
  2. , PASSWORD = 'XXXXXX'
  3. , sys = require('sys')
  4. , http = require('http')
  5. , ws = require('./vendor/ws')
  6. , base64 = require('./vendor/base64')
  7. , logger = require("./vendor/logger");
  8.  
  9. var a, wait = false;
  10.  
  11. // Authentication Headers for Twitter
  12. var auth = base64.encode(USERNAME + ':' + PASSWORD)
  13. , headers = {'authorization':'Basic ' + auth, 'host':'betastream.twitter.com', 'content-type':'application/json'};
  14.  
  15. // Connection to Twitter's streaming API
  16. var twitter = http.createClient(443, "betastream.twitter.com", true)
  17. // , request = twitter.request("GET", "/2b/user.json", headers);
  18. , request = twitter.request("GET", "/2b/user.json?replies=all", headers);
  19.  
  20. request.on('response', function (response) {
  21. sys.debug("STATUS: " + response.statusCode);
  22. sys.debug("HEADER: " + JSON.stringify(response.headers));
  23. response.setEncoding("utf8");
  24. response.on("data", function (chunk) {
  25.  
  26. if ( chunk.substr(0,8) == "{\"friend" && lastchar != '}') { sys.debug("FRIEND: " + chunk); return; } // check for friends header and abort
  27. if ( chunk.length < 3 ) { return; } // check for heartbeat and abort
  28. if ( chunk.substr(0,8) == "{\"delete" ) { sys.debug("Delete ####"); return; } // check for delete and abort
  29.  
  30. var firstchar = chunk.charAt(0), lastchar = chunk.charAt(chunk.length - 3);
  31.  
  32. // START
  33. if ( firstchar == '{' && lastchar != '}' ) { // looking for partial sends and then combining them
  34. a = chunk;
  35. wait = true;
  36. sys.debug('firstchar ####: ' + firstchar + ' | lastchar ####: ' + lastchar);
  37. // sys.debug("START ####: " + a);
  38. sys.debug( "START: " + chunk );
  39. sys.debug( "AAAAA: " + a );
  40. return;
  41. }
  42.  
  43. // MIDDLE
  44. if ( wait && firstchar != '{' && lastchar != '}' ) {
  45. a += chunk;
  46. sys.debug('firstchar ####: ' + firstchar + ' | lastchar ####: ' + lastchar);
  47. // sys.debug("MDDLE ####: " + a);
  48. sys.debug( "MDDLE: " + chunk );
  49. sys.debug( "AAAAA: " + a );
  50. return;
  51. }
  52.  
  53. // FINISH
  54. if ( wait && firstchar != '{' && lastchar == '}' ) {
  55. a += chunk;
  56. sys.debug('firstchar ####: ' + firstchar + ' | lastchar ####: ' + lastchar);
  57. // sys.debug("FINSH ####: " + a);
  58. sys.debug( "FINSH: " + chunk );
  59. sys.debug( "AAAAA: " + a );
  60. wait = false;
  61. }
  62.  
  63. // sys.debug( "Length: " + chunk.length + " ####" );
  64. // sys.debug( "Chunk: " + chunk );
  65.  
  66. try {
  67. var check = JSON.parse(chunk);
  68. if ( check.event == "follow" ) { sys.debug("Follow ####"); return; } // check for follow and abort
  69. if ( check.event == "list_member_added" ) { sys.debug("List ####"); return; } // check for list and abort
  70. }
  71. catch (e) {
  72. sys.debug("WRONG ###");
  73. }
  74.  
  75. server.broadcast(chunk);
  76.  
  77. });
  78. });
  79. request.end();
  80.  
  81.  
  82. // Websockets server setup
  83. var server = ws.createServer({
  84. debug: true
  85. , version: "auto"
  86. });
  87.  
  88. server.on("listening", function(){
  89. sys.debug("Listening for connections.");
  90. });
  91.  
  92. // Handle WebSocket Requests
  93. server.on("connection", function(conn){
  94. function log(data){
  95. sys.debug((+new Date())+" \033[0;32m<"+conn.id+"> "+data.toString()+"\033[0m");
  96. };
  97.  
  98. log("connected");
  99. server.broadcast("<"+conn.id+"> connected");
  100.  
  101. conn.on("close", function(){
  102. log("onClose");
  103. server.broadcast("<"+conn.id+"> disconnected");
  104. });
  105.  
  106. conn.on("message", function(message){
  107. log([message.length, JSON.stringify(message)].join(" | "));
  108. server.broadcast("<"+conn.id+"> "+message);
  109. });
  110. });
  111.  
  112. // Handle HTTP Requests:
  113. server.on("request", function(req, res){
  114. res.writeHead(200, {'Content-Type': 'text/plain'});
  115. res.end('This is, infact a websocket server, but we can do http!\n');
  116. });
  117.  
  118. server.listen(8000);
Add Comment
Please, Sign In to add comment