Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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 如何在电子产品中使用primus_Javascript_Electron_Primus - Fatal编程技术网

Javascript 如何在电子产品中使用primus

Javascript 如何在电子产品中使用primus,javascript,electron,primus,Javascript,Electron,Primus,我的目标是用electron制作一个桌面应用程序。我在nodejs中已经有了一个脚本,当我在nodejs中运行它时,它可以工作,但是它在electron中阻塞了,我知道primus是个问题,但我不知道如何解决它 我想在websocket中连接,因此我使用: var url = "https://myurl.com" const PrimusSocket = Primus.createSocket({transformer: "engine.io",});

我的目标是用electron制作一个桌面应用程序。我在nodejs中已经有了一个脚本,当我在nodejs中运行它时,它可以工作,但是它在electron中阻塞了,我知道primus是个问题,但我不知道如何解决它

我想在websocket中连接,因此我使用:

var url = "https://myurl.com"

const PrimusSocket = Primus.createSocket({transformer: "engine.io",});

const primus = new PrimusSocket(url);
但第二行不起作用,控制台中没有显示任何内容,只有一条警告不应阻止所有脚本:

[Deprecation] 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.
下面是我的index.html中不起作用的代码


异步函数测试(){
var Primus=需要(“Primus”)
变量url=”https://myurl.com";
log(“我们创建套接字”);
const PrimusSocket=Primus.createSocket({transformer:'engine.io',});
console.log(“新实例”);//此消息不会显示
const primus=新的PrimusSocket(url);
primus.on(“打开的”,()=>{
控制台日志(“打开”);
})
primus.on(“数据”,数据=>{
console.log(“收到的消息:+数据._messageType”);
})
primus.on(“重新连接”,()=>{
console.log('reconnect');
})
primus.on(“错误”,错误=>{
logger.error(新错误(error));
})
primus.on(“结束”,()=>{
控制台日志(“结束”);
})
primus.open();
}
test();

对我来说,它是这样工作的

服务器端

app.js

websockets.js

客户端

index.html


感谢您提供解决方案!你能给你的代码添加一个解释吗?它做什么,如何工作,如何解决老年退休金问题。只有代码的答案才能导致错误。谢谢
const = express();
const server = http.createServer(app);
// initWebSocketServer is a promise in websockets.js
// that is resolve when you create the library and save it where you want, 
const wsInitPromise = initWebSocketServer(server);
// Start server
function startServer() {
  app.angularFullstack = server.listen(config.port, config.ip, function() {
    console.log('Express server listening on %d, in %s mode', config.port, app.get('env'));
  });
}
// Start the server when Primus has been resolved
wsInitPromise.then(setImmediate(startServer)).catch(err => {
    console.log('Server failed to start due to error: %s', err);
  });
// primus-emit module adds client->server and server->client event emitting 
// to Primus
import primusEmit from 'primus-emit';

const registerFunctions = [
  // Any controller you add you should create a socket file where
  //  you register (spark, primus) in order to use it in each of 
  // your controller
  require('../api/discountRequest/discountRequest.socket').register,
  require('../api/discount/discount.socket').register,
  require('../api/paymentMethod/paymentMethod.socket').register,
  require('../api/invoice/invoice.socket').register,
];
function onDisconnect(spark) {}
function onConnect(spark) {
  spark.on('info', data => {
    spark.log(JSON.stringify(data, null, 2));
  });

  for(let register of registerFunctions) {
    // here you register all your paths to socket's file
    register(spark, primus);
  }
}
let primus;

export function broadcast(message) {
  primus.forEach(spark => {
    spark.emit('broadcast', message);
  });
}

export default function initWebSocketServer(server) {
  // primus needs to be "attached" to a HTTP compatible server (http and https), 
  //there is multiple transformer you can choose, from me I use websocket
  primus = new Primus(server, {
    transformer: 'websockets',
  });
  // add the primus-emit plugin
  primus.plugin('emit', primusEmit);
  // make some event on starting
  primus.on('connection', onConnect);
  primus.on('disconnection', onDisconnect);

  return new Promise((resolve, reject) => {
    // Save the primus client library configured for our server settings
    // create the library 
    primus.library();
    // store it somewhere in your server
    primus.save(path.join(__dirname, 'client/components/socket/primus.js'), err => {
      if(err) return reject(err);
       resolve();
    });
  }).catch(e => console.error(`.catch(${e})`));
}
// primus/primus.js is the default path to primus script 
<script defer src="https://your-server-url.com/primus/primus.js"></script>
checkConnection() {
  // if Primus library is not yet created so wait for it 
  if (typeof(Primus) !== "undefined") {
    this.primus = new Primus(/*server url with */, {});
    some default primus event
    this.primus.on('open', () => {
      console.log('Connection is alive and kicking');
    });
    this.primus.on('error', (err) => {
      console.error('Something horrible has happened', err.stack);
    });
    this.primus.on('reconnect', (opts) => {
      console.log('Reconnection attempt started');
      this.branchinfo();
    });
    this.primus.on('reconnect timeout', (err, opts) => {
      console.log('Timeout expired: %s', err.message);
    });
    this.primus.on('reconnect failed', (err, opts) => {
      console.log('The reconnection failed: %s', err.message);
    });
    this.primus.on('end', () => {
      console.log('Connection closed');
    });
  } else {
    setTimeout(() => {
      this.checkConnection();
    },1000);
  }
}