Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取chrome.sockets API中未定义类型错误的属性套接字_Javascript_Sockets_Google Chrome - Fatal编程技术网

Javascript 无法读取chrome.sockets API中未定义类型错误的属性套接字

Javascript 无法读取chrome.sockets API中未定义类型错误的属性套接字,javascript,sockets,google-chrome,Javascript,Sockets,Google Chrome,我正在编写一个ChromeJS扩展,它使用套接字与Java服务器通信。 当我使用以下行时: var socket = chrome.socket || chrome.experimental.socket; socket.create('tcp',{},function(createInfo) { 我明白了 Error in event handler for 'tabs.onUpdated': Cannot read property 'socket' of undefined TypeEr

我正在编写一个ChromeJS扩展,它使用套接字与Java服务器通信。 当我使用以下行时:

var socket = chrome.socket || chrome.experimental.socket;
socket.create('tcp',{},function(createInfo) {
我明白了

Error in event handler for 'tabs.onUpdated': Cannot read property 'socket' of undefined TypeError: Cannot read property 'socket' of undefined
错误(JS代码位于tabs.onUpdate函数中)

我的清单文件是:

{
      "manifest_version": 2,

  "name": "MitM Phishing Detector",
  "description": "This extension protects your browser against phishing attacks based on MitM attacks",
  "version": "1.0",

  "background": {
    "scripts": ["notify.js"],
    "persistent": false
  },

  "browser_action": {
    "default_icon": "bluetooth_device.png",
    "default_popup": "choose_device.html"
  },

  "permissions": [
      "tabs", 
      "http://*/*", 
      "background", 
      {"socket": 
       [ "tcp-connect:127.0.0.1:8081" ] 
      },
      "notifications"
  ]
}

如果你使用的是金丝雀/实验版的Chrome,你应该能够做到

chrome.experimental.socket.create('tcp', ...)
打开TCP套接字。但是仅仅调用
socket.create
是行不通的

记住,这可能只适用于chrome。。。WebSocket是一种更具可移植性的解决方案

要正确设置套接字,我认为这应该可以工作(尚未测试):


但是由于我使用了var socket=chrome.experimental.socket,它应该可以正常工作吗?我不确定
undefined
仍然是一个值-因此可以在
|
语句中为其赋值undefined。增加了可能的“更好”方法。
var socket = chrome.socket;
if (unfefined !== chrome.experimental.socket)
  socket = chrome.experimental.socket;
if (undefined === chrome.socket)
  throw "Socket unavailable"