【问题标题】:How could I trigger an Electron api from an external server?如何从外部服务器触发 Electron api?
【发布时间】:2020-10-04 04:14:39
【问题描述】:

Electron 开发新手,这是我正在尝试实施的想法:

我想从不是我的电子应用程序的网站向快递服务器发出一个请求,其中包含数据有效负载,并通过聚焦电子浏览器窗口并向电子应用程序发送请求有效负载来响应该快速路由显示。

目前有一个 Electron 应用程序使用 loadFile 来渲染一个 html.index 以加载捆绑的 React 应用程序。我知道您可以使用 ipcMain/ipcRenderer 在主电子进程和 React 应用程序渲染器进程之间进行通信,但我不知道如何让我的 express 应用程序与电子通信。

我也不确定如何将请求有效负载从快速路由发送到电子应用程序。我是否需要为渲染器进程(react 应用程序)创建某种 websocket 或事件发射器以直接从服务器接收消息?

tldr:我想从express路由调用browserWindow.focus(),然后将req有效负载发送到前端应用程序进行显示

【问题讨论】:

    标签: reactjs express electron


    【解决方案1】:

    您可以使用 websockets/socket.io 来做到这一点。

    使用socket.io,基本上你只会在你的http请求回调中有一个套接字发射。

    这是一个小例子:

    在您的express 应用程序中,设置一个socket.io 服务器,其路由会发出焦点窗口事件:

    const app = require('express')()
    const http = require('http').createServer(app)
    const io = require('socket.io')(http)
    
    
    app.post('/focus-window, (req, res) => {
      io.emit('focus-window')
      res.send(200)
    });
    
    io.on('connection', (socket) => {
      // connections here
      console.log('a user connected');
    });
    
    http.listen(3000, () => {
      console.log('listening on *:3000');
    });
    
    

    在您的electron 主进程中,使用socket.io-client 设置一个可以访问BrowserWindow 对象的套接字客户端,如下所示:

    const { app, BrowserWindow } = require('electron')
    const socket = require('socket.io-client')('http://localhost:3000')
    const path = require('path')
    
    function createWindow () {
      // Create the browser window.
      const win = new BrowserWindow({
        width: 400,
        height: 600
      })
    
      // and load the index.html of the app.
      win.loadFile(path.resolve('dist/index.html'))
    
      // setup your socket listeners
      socket.on('connect', function(){
        console.log('socket.io-client connected')
      })
    
      // here it is listening for the focus-window event
      socket.on('focus-window', () => {
        win.focus()
      })
    }
    
    app.whenReady().then(createWindow)
    

    然后您可以使用套接字发射器将信息发送到电子应用程序,然后使用电子的 ipc 将信息发送到反应渲染器进程(从概念上讲,我还没有测试过)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      相关资源
      最近更新 更多