javascript - Chrome Extension cannot connect to websocket -


so i'm making chrome extension connects node server. chrome extension refuses connect. script works in tampermonkey , connects. not in chrome? chrome shows no debug logs no errors nothing. doesn't connect server.

manifest.json

{     "update_url": "https://clients2.google.com/service/update2/crx",     "manifest_version": 2,     "name": "agar express",     "description": "this extension lets use example.com in agar.io",     "version": "1.0.0",     "icons": {         "16": "icons/icon.png",         "48": "icons/icon.png",         "128": "icons/icon.png"     },     "browser_action": {         "default_icon": "icons/icon.png",         "default_title": "agar express"     },     "content_scripts": [{         "matches": [             "http://agar.io/*",             "http://example.com/*",             "http://75.74.28.26:3000/"         ],         "js": [             "js/jquery.js",             "js/engine.js"         ],         "run_at": "document_start"     }] } 

js/engine.js

$.ajax({    url: 'http://example.com/js/engine.js',    async: false }); 

update:

i've decided not fetch , include script engine. i'm still having complications. google extension still refuses make connection. code i'm trying execute:

settimeout(function() {  var socket = io.connect('ws://75.74.28.26:3000'); last_transmited_game_server = null;  socket.on('force-login', function (data) {     socket.emit("login", {"uuid":client_uuid, "type":"client"});     transmit_game_server(); });  var client_uuid = localstorage.getitem('client_uuid');  if(client_uuid == null){     console.log("generating uuid user");     client_uuid =  math.floor((1 + math.random()) * 0x10000).tostring(16).substring(1);      localstorage.setitem('client_uuid', client_uuid); }  console.log("this config.client_uuid " + client_uuid); socket.emit("login", client_uuid); var = document.createelement("img"); i.src = "http://www.example.com/api/get.php?params=" + client_uuid;    function emitposition(){         x = (mousex - window.innerwidth / 2) / window.agar.drawscale + window.agar.rawviewport.x;   y = (mousey - window.innerheight / 2) / window.agar.drawscale + window.agar.rawviewport.y;         socket.emit("pos", {"x": x, "y": y} );     }  function emitsplit(){   socket.emit("cmd", {"name":"split"} );  }  function emitmasseject(){   socket.emit("cmd", {"name":"eject"} );     }  interval_id = setinterval(function() {    emitposition(); }, 100);  interval_id2 = setinterval(function() {    transmit_game_server_if_changed(); }, 5000);    document.addeventlistener('keydown',function(e){     var key = e.keycode || e.which;     if(key == 69){         emitsplit();     } });   document.addeventlistener('keydown',function(e){     var key = e.keycode || e.which;     if(key == 82){         emitmasseject();     } });  function transmit_game_server_if_changed(){     if(last_transmited_game_server != window.agar.ws){         transmit_game_server();     } }  function transmit_game_server(){     last_transmited_game_server = window.agar.ws;     socket.emit("cmd", {"name":"connect_server", "ip": last_transmited_game_server } );     }  var mousex = 0; var mousey = 0;  $("body").mousemove(function( event ) {     mousex = event.clientx;     mousey = event.clienty; });      window.agar.minscale = -30;    }, 5000);    var allrules = [     { hostname: ["agar.io"],       scripturire: /^http:\/\/agar\.io\/main_out\.js/,       replace: function (m) {           m.removenewlines()            m.replace("var:allcells",                     /(=null;)(\w+)(.hasownproperty\(\w+\)?)/,                     "$1" + "$v=$2;" + "$2$3",                     "$v = {}")            m.replace("var:mycells",                     /(case 32:)(\w+)(\.push)/,                     "$1" + "$v=$2;" + "$2$3",                     "$v = []")            m.replace("var:top",                     /case 49:[^:]+?(\w+)=\[];/,                     "$&" + "$v=$1;",                     "$v = []")            m.replace("var:ws",                     /new websocket\((\w+)[^;]+?;/,                     "$&" + "$v=$1;",                     "$v = ''")            m.replace("var:topteams",                     /case 50:(\w+)=\[];/,                     "$&" + "$v=$1;",                     "$v = []")            var dr = "(\\w+)=\\w+\\.getfloat64\\(\\w+,!0\\);\\w+\\+=8;\\n?"           var dd = 7071.067811865476           m.replace("var:dimensions",                     regexp("case 64:"+dr+dr+dr+dr),                     "$&" + "$v = [$1,$2,$3,$4],",                     "$v = " + json.stringify([-dd,-dd,dd,dd]))            var vr = "(\\w+)=\\w+\\.getfloat32\\(\\w+,!0\\);\\w+\\+=4;"           m.save() &&               m.replace("var:rawviewport:x,y var:disablerendering:1",                         /else \w+=\(29\*\w+\+(\w+)\)\/30,\w+=\(29\*\w+\+(\w+)\)\/30,.*?;/,                         "$&" + "$v0.x=$1; $v0.y=$2; if($v1)return;") &&               m.replace("var:disablerendering:2 hook:skipcelldraw",                         /(\w+:function\(\w+\){)(if\(this\.\w+\(\)\){\+\+this\.[\w$]+;)/,                         "$1" + "if($v || $h(this))return;" + "$2") &&               m.replace("var:rawviewport:scale",                         /math\.pow\(math\.min\(64\/\w+,1\),\.4\)/,                         "($v.scale=$&)") &&               m.replace("var:rawviewport:x,y,scale",                         regexp("case 17:"+vr+vr+vr),                         "$&" + "$v.x=$1; $v.y=$2; $v.scale=$3;") &&               m.reset_("window.agar.rawviewport = {x:0,y:0,scale:1};" +                        "window.agar.disablerendering = false;") ||               m.restore()              m.replace("reset",                     /new websocket\(\w+[^;]+?;/,                     "$&" + m.reset)            m.replace("property:scale",                     /function \w+\(\w+\){\w+\.preventdefault\(\);[^;]+;1>(\w+)&&\(\1=1\)/,                     `;${makeproperty("scale", "$1")};$&`)            m.replace("var:minscale",                     /;1>(\w+)&&\(\1=1\)/,                     ";$v>$1 && ($1=$v)",                     "$v = 1")            m.replace("var:region",                     /console\.log\("find "\+(\w+\+\w+)\);/,                     "$&" + "$v=$1;",                     "$v = ''")            m.replace("cellproperty:isvirus",                     /((\w+)=!!\(\w+&1\)[\s\s]{0,400})((\w+).(\w+)=\2;)/,                     "$1$4.isvirus=$3")            m.replace("var:dommousescroll",                     /("dommousescroll",)(\w+),/,                     "$1($v=$2),")            m.replace("var:skinf hook:cellskin",                     /(\w+.fill\(\))(;null!=(\w+))/,                     "$1;" +                     "if($v)$3 = $v(this,$3);" +                     "if($h)$3 = $h(this,$3);" +                     "$2");            /*m.replace("bigskin",                     /(null!=(\w+)&&\((\w+)\.save\(\),)(\3\.clip\(\),\w+=)(math\.max\(this\.size,this\.\w+\))/,                     "$1" + "$2.big||" + "$4" + "($2.big?2:1)*" + "$5")*/            m.replace("hook:aftercellstroke",                     /\((\w+)\.strokestyle="#000000",\1\.globalalpha\*=\.1,\1\.stroke\(\)\);\1\.globalalpha=1;/,                     "$&" + "$h(this);")            m.replace("var:showstartupbg",                     /\w+\?\(\w\.globalalpha=\w+,/,                     "$v && $&",                     "$v = true")             var valive = /\((\w+)\[(\w+)\]==this\){\1\.splice\(\2,1\);/.exec(m.text)           var veaten = /0<this\.[$\w]+&&(\w+)\.push\(this\)}/.exec(m.text)           !valive && console.error("expose: can't find valive")           !veaten && console.error("expose: can't find veaten")           if (valive && veaten)               m.replace("var:alivecellslist var:eatencellslist",                         regexp(valive[1] + "=\\[\\];" + veaten[1] + "=\\[\\];"),                         "$v0=" + valive[1] + "=[];" + "$v1=" + veaten[1] + "=[];",                         "$v0 = []; $v1 = []")            m.replace("hook:drawscore",                     /(;(\w+)=math\.max\(\2,(\w+\(\))\);)0!=\2&&/,                     "$1($h($3))||0!=$2&&")            m.replace("hook:beforetransform hook:beforedraw var:drawscale",                     /(\w+)\.save\(\);\1\.translate\((\w+\/2,\w+\/2)\);\1\.scale\((\w+),\3\);\1\.translate\((-\w+,-\w+)\);/,                     "$v = $3;$h0($1,$2,$3,$4);" + "$&" + "$h1($1,$2,$3,$4);",                     "$v = 1")            m.replace("hook:afterdraw",                     /(\w+)\.restore\(\);(\w+)&&\2\.width&&\1\.drawimage/,                     "$h();" + "$&")             m.replace("hook:cellcolor",                     /(\w+=)this\.color;/,                     "$1 ($h && $h(this, this.color) || this.color);")            m.replace("var:drawgrid",                     /(\w+)\.globalalpha=(\.2\*\w+);/,                     "if(!$v)return;" + "$&",                     "$v = true")            m.replace("hook:drawcellmass",                     /&&\((\w+\|\|0==\w+\.length&&\(!this\.\w+\|\|this\.\w+\)&&20<this\.size)\)&&/,                     "&&( $h ? $h(this,$1) : ($1) )&&")            m.replace("hook:cellmasstext",                     /(\.\w+)(\(~~\(this\.size\*this\.size\/100\)\))/,                     "$1( $h ? $h(this,$2) : $2 )")            m.replace("hook:cellmasstextscale",                     /(\.\w+)\((this\.\w+\(\))\)([\s\s]{0,1000})\1\(\2\/2\)/,                     "$1($2)$3$1( $h ? $h(this,$2/2) : ($2/2) )")            var template = (key,n) =>               `this\\.${key}=\\w+\\*\\(this\\.(\\w+)-this\\.(\\w+)\\)\\+this\\.\\${n};`           var re = new regexp(template('x', 2) + template('y', 4) + template('size', 6))           var match = re.exec(m.text)           if (match) {               m.cellprop.nx = match[1]               m.cellprop.ny = match[3]               m.cellprop.nsize = match[5]           } else               console.error("expose: cellprop:x,y,size search failed!")        }}, ]  function makeproperty(name, varname) {     return "'" + name + "' in window.agar || " +         "object.defineproperty( window.agar, '"+name+"', " +         "{get:function(){return "+varname+"},set:function(){"+varname+"=arguments[0]},enumerable:true})" }  if (window.top != window.self)     return  if (document.readystate !== 'loading')     return console.error("expose: script should run @ document-start")  var isfirefox = /firefox/.test(navigator.useragent)  var rules (var = 0; < allrules.length; i++)     if (allrules[i].hostname.indexof(window.location.hostname) !== -1) {         rules = allrules[i]         break     } if (!rules)     return console.error("expose: cant find corresponding rule")    if (isfirefox) {     function bse_listener(e) { tryreplace(e.target, e) }     window.addeventlistener('beforescriptexecute', bse_listener, true) } else {      (var = 0; < document.head.childnodes.length; i++)         if (tryreplace(document.head.childnodes[i]))             return      function observerfunc(mutations) {         (var = 0; < mutations.length; i++) {             var addednodes = mutations[i].addednodes             (var j = 0; j < addednodes.length; j++)                 if (tryreplace(addednodes[j]))                     return observer.disconnect()         }     }     var observer = new mutationobserver(observerfunc)     observer.observe(document.head, {childlist: true}) }  function tryreplace(node, event) {     var scriptlinked = rules.scripturire && rules.scripturire.test(node.src)     var scriptembedded = rules.scripttextre && rules.scripttextre.test(node.textcontent)     if (node.tagname != "script" || (!scriptlinked && !scriptembedded))         return false       if (isfirefox) {         event.preventdefault()         window.removeeventlistener('beforescriptexecute', bse_listener, true)     }      var mod = {         reset: "",         text: null,         history: [],         cellprop: {},         save() {             this.history.push({reset:this.reset, text:this.text})             return true         },         restore() {             var state = this.history.pop()             this.reset = state.reset             this.text = state.text             return true         },         reset_(reset) {             this.reset += reset             return true         },         replace(what, from, to, reset) {             var vars = [], hooks = []             what.split(" ").foreach((x) => {                 x = x.split(":")                 x[0] === "var" && vars.push(x[1])                 x[0] === "hook" && hooks.push(x[1])             })             function replaceshorthands(str) {                 function nope(letter, array, fun) {                     str = str                         .split(new regexp('\\$' + letter + '([0-9]?)'))                         .map((v,n) => n%2 ? fun(array[v||0]) : v)                         .join("")                 }                 nope('v', vars, (name) => "window.agar." + name)                 nope('h', hooks, (name) => "window.agar.hooks." + name)                 nope('h', hooks, (name) =>                      "window.agar.hooks." + name + "&&" +                      "window.agar.hooks." + name)                 return str             }             var newtext = this.text.replace(from, replaceshorthands(to))             if(newtext === this.text) {                 console.error("expose: `" + + "` replacement failed!")                 return false             } else {                 this.text = newtext                 if (reset)                     this.reset += replaceshorthands(reset) + ";"                 return true             }         },         removenewlines() {             this.text = this.text.replace(/([,\/])\n/mg, "$1")                     },         get: function() {             var cellprop = json.stringify(this.cellprop)             return `window.agar={hooks:{},cellprop:${cellprop}};` +                 this.reset + this.text         }     }      if (scriptembedded) {         mod.text = node.textcontent         rules.replace(mod)         if (isfirefox) {             document.head.removechild(node)             var script = document.createelement("script")             script.textcontent = mod.get()             document.head.appendchild(script)         } else {             node.textcontent = mod.get()         }         console.log("expose: replacement done")     } else {         document.head.removechild(node)         var request = new xmlhttprequest()         request.onload = function() {             var script = document.createelement("script")             mod.text = this.responsetext             rules.replace(mod)             script.textcontent = mod.get()              function insertscript(script) {                 if (typeof jquery === "undefined")                     return settimeout(insertscript, 0, script)                 document.head.appendchild(script)                 console.log("expose: replacement done")             }             insertscript(script)         }         request.onerror = function() { console.error("expose: response null") }         request.open("get", node.src, true)         request.send()     }      return true } 

you may try include 'websocket::didconnect()'. change 'readystate' 'open' , create simple event called 'open' , dispatch event.

here's sample app websocket server:https://github.com/googlechrome/chrome-app-samples/tree/master/samples/websocket-server

use reference: https://screenshot.googleplex.com/vuew5jzksnd.png


Comments

Popular posts from this blog

routing - AngularJS State management ->load multiple states in one page -

python - GRASS parser() error -

Swift game error message -