电子渲染器进程中未定义SailsS​​ocket对象中的_raw?

时间:2018-12-14 08:05:51

标签: javascript socket.io vuejs2 electron sails.js

在尝试访问原始套接字io客户端实例时遇到麻烦,该实例是sails io创建的SailsS​​ocket对象的一部分。

在我的Sails应用程序中,我可以执行以下操作来创建Sails io客户端实例:

// Require the sockets.js file if you want to be able to use the socket client to
// do things like `io.socket.get()` inside of this script.
var io = require('../dependencies/sockets.js')

// Configure the socket client
io.sails.url = 'http://localhost:1337'
io.sails.autoConnect = false
io.sails.reconnection = true
io.sails.reconnectionDelay = 3000
io.sails.reconnectionDelayMax = 7000

// Connect first so we can pass the _raw info to vue-socket-io
const socket = io.sails.connect()

我正在使用vue-socket-io,它要求在连接选项中使用套接字io客户端实例。

在Sails io客户端实例中,可以使用SailsS​​ocket对象_raw属性/方法进行访问:

import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
  debug: true,
  connection: socket._raw,
  vuex: {
    store,
    actionPrefix: 'SOCKET_',
    mutationPrefix: 'SOCKET_'
  }
}))

按预期工作。

当我尝试在Electron渲染器过程中执行相同的操作时,我得到了一些意外的行为:

...
// Connect first so we can pass the _raw info to vue-socket-io
const socket = io.sails.connect()

console.log(socket)
console.log(typeof socket._raw)

import VueSocketIO from 'vue-socket.io'
Vue.use(new VueSocketIO({
  debug: true,
  connection: socket._raw,
...

在这种情况下,vue-socket-io抱怨:Uncaught Error: Unsupported connection type

记录socket显示SailsS​​ocket对象,但是记录socket._raw显示未定义。后者很奇怪,因为在SailsS​​ocket对象中它显然位于其中:

console log

我认为这是在vue-socket-io中引起连接错误的原因,但它不是相对的,控制台显示了对象的属性,但是尝试访问该属性直接显示为未定义?

有人可以帮助我了解为什么会这样吗,或者建议是什么导致我的Sails / Electron应用之间的这种差异?

0 个答案:

没有答案