我正在尝试使用 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) 我一直在构建事件驱动的微服务。然后,我想知道为什么不使用事件驱动的整体应用程序。
现在的缺点是可扩展性问题。我无法为特定流量密集型域制作副本。
但除此之外,我仍然获得许多其他好处,例如
此外,我们还有整体优势:主要是减少了 DevOps。
当应用程序变得流行(以及更多流量)时,我们可以轻松地将其转换为微服务。我认为将代码从非事件驱动转换为事件驱动是最具挑战性的部分,因为它显着改变了整体架构。
我能想到的一个批评是,仅仅为了一个整体来管理事件总线是否值得?如果我要使用像 apache kafka 这样的东西,它非常昂贵且管理起来具有挑战性,可能不值得。
但是,如果我使用 NATS Streaming 或 Redis Stream 之类的东西,它们或多或少与 apache kafka 完成相同的工作,但重量轻且更易于管理,那么我认为这也不会成为问题。
当我用谷歌搜索时,我找不到关于这些想法的文章,所以我想知道我是否遗漏了一些重要的东西。
我是一名 web 开发人员,试图构建一个带有推送通知的简单混合 webview 应用程序。所以我使用了flutter和firebase-cloud-messaging。该android侧工作在两个仿真器和物理的Android手机上的罚款。
但是对于ios我有一个问题。该onMessage回调的工作在模拟器和生成AlertDialog。但是当我在物理 iphone 上测试它时,它不起作用。什么都没有弹出。其他回调确实有效( onLaunch, onResume)。另一个奇怪的部分是,一旦测试应用程序安装在物理设备上,终端就会失去与设备的连接。所以我什至看不到错误日志。
我正在构建一个聊天服务,我想处理订阅(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) architecture ×1
event-driven ×1
firebase ×1
flutter ×1
graphql ×1
ios ×1
node.js ×1
reactjs ×1