小编Sih*_*Kim的帖子

使用github操作部署时如何在node.js进程中设置环境变量

我正在尝试使用 github 操作为我的 node.js 服务器构建 CI 管道。

我只需要解决一个问题。我需要设置环境变量,以便我的 node.js 服务器可以通过访问 env 变量process.env

下面是 github 操作工作流文件。

name: Build and Deploy to GKE

on:
  pull_request:
    branches:
      - master

# Environment variables available to all jobs and steps in this workflow
env:
  ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}

jobs:
  setup-build-publish-deploy:
    name: Setup, Build, Publish, and Deploy
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Apollo Schema Update
        env:
          ENGINE_API_KEY: ${{ secrets.ENGINE_API_KEY }}
        run: |
          sudo npm install
          sudo npm install -g apollo …
Run Code Online (Sandbox Code Playgroud)

continuous-integration node.js github-actions

10
推荐指数
1
解决办法
5106
查看次数

为什么不采用整体事件驱动架构?

我一直在构建事件驱动的微服务。然后,我想知道为什么不使用事件驱动的整体应用程序。

现在的缺点是可扩展性问题。我无法为特定流量密集型域制作副本。

但除此之外,我仍然获得许多其他好处,例如

  1. 最终一致性
  2. 我个人还发现使用正确的设置进行调试更容易,因为我可以重播事件。
  3. 降低复杂性。域之间的解耦(我们仍然在文件夹中管理域)

此外,我们还有整体优势:主要是减少了 DevOps。

当应用程序变得流行(以及更多流量)时,我们可以轻松地将其转换为微服务。我认为将代码从非事件驱动转换为事件驱动是最具挑战性的部分,因为它显着改变了整体架构。

我能想到的一个批评是,仅仅为了一个整体来管理事件总线是否值得?如果我要使用像 apache kafka 这样的东西,它非常昂贵且管理起来具有挑战性,可能不值得。

但是,如果我使用 NATS Streaming 或 Redis Stream 之类的东西,它们或多或少与 apache kafka 完成相同的工作,但重量轻且更易于管理,那么我认为这也不会成为问题。

当我用谷歌搜索时,我找不到关于这些想法的文章,所以我想知道我是否遗漏了一些重要的东西。

architecture event-driven

9
推荐指数
1
解决办法
2571
查看次数

fcm onMessage 在模拟器上工作,但在物理设备上不起作用

我是一名 web 开发人员,试图构建一个带有推送通知的简单混合 webview 应用程序。所以我使用了flutterfirebase-cloud-messaging。该android侧工作在两个仿真器和物理的Android手机上的罚款。

但是对于ios我有一个问题。该onMessage回调的工作在模拟器和生成AlertDialog。但是当我在物理 iphone 上测试它时,它不起作用。什么都没有弹出。其他回调确实有效( onLaunch, onResume)。另一个奇怪的部分是,一旦测试应用程序安装在物理设备上,终端就会失去与设备的连接。所以我什至看不到错误日志。

ios firebase flutter firebase-cloud-messaging

8
推荐指数
1
解决办法
668
查看次数

如何在apollo客户端中检测订阅(websocket)的断开和重新连接

我正在构建一个聊天服务,我想处理订阅(websocket)连接断开的情况。 Apollo 客户端的配置如下。我删除了不必要的代码,如缓存、authLink 等。

我如何使用 React、apollo 客户端做到这一点?如果它断开连接,我想将其显示到聊天页面,当用户重新连接时,我想获取所有错过的聊天消息。这就是为什么我需要知道断开连接、连接事件

以下是该应用程序中使用的相关包:

"@apollo/client": "^3.3.7",
"subscriptions-transport-ws": "^0.9.18",
"react": "^17.0.1"
Run Code Online (Sandbox Code Playgroud)
const httpLink = new BatchHttpLink({ uri: config.API_URL })
const wsLink = new WebSocketLink({
  uri: config.WS_URL,
  options: {
    reconnect: true,
    connectionParams:{       
      authToken: accessToken,
    },
  },
})

const splitLink = split(
  ({ query }) => {
    const definition = getMainDefinition(query) 
    return definition.kind === 'OperationDefinition' && definition.operation === 'subscription'
  },
  wsLink,
  httpLink
)
const client = new ApolloClient({
  cache,
  link: from([new SentryLink(), authLink, errorLink, splitLink]),
})
Run Code Online (Sandbox Code Playgroud)

reactjs graphql graphql-subscriptions apollo-client

6
推荐指数
1
解决办法
1万
查看次数