node.js - 如何在 React Native 中使用 Azure PubSub?

标签 node.js azure react-native websocket azure-web-pubsub

我正在尝试使用 React Native 构建一个聊天应用程序,并且我正在尝试使用 Azure Web Pub Sub 来实现此目的。 我正在关注docs所以我添加了@azure/web-pubsub依赖于我的项目,并复制了我在文档中找到的这段代码:

// other react native imports...

const WebSocket = require('ws');
const { WebPubSubServiceClient } = require('@azure/web-pubsub');

async function main() {
  const hub = "pubsub";
  let service = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);
  let token = await service.getClientAccessToken();
  let ws = new WebSocket(token.url);
  ws.on('open', () => console.log('connected'));
  ws.on('message', data => console.log('Message received: %s', data));
}

我在 Android 上运行该应用程序,收到此错误,告诉我 url在这些目录中找不到依赖项:node_modules@azure\web-pubsub\node_modules

这是控制台中的完整错误:

error: Error: Unable to resolve module url from C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\@azure\web-pubsub\dist\index.js: url could not be found within the project or in these directories:
  node_modules\@azure\web-pubsub\node_modules
  node_modules
  ..\..\..\..\node_modules
  11 | var jwt = _interopDefault(require('jsonwebtoken'));
  12 | var logger$1 = require('@azure/logger');
> 13 | var url = require('url');
     |                    ^
  14 |
  15 | /*
  16 |  * Copyright (c) Microsoft Corporation.
    at ModuleResolver.resolveDependency (C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:158:15)
    at DependencyGraph.resolveDependency (C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\node-haste\DependencyGraph.js:231:43)
    at Object.resolve (C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\lib\transformHelpers.js:129:24)
    at resolve (C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\DeltaBundler\traverseDependencies.js:396:33)
    at C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\DeltaBundler\traverseDependencies.js:412:26
    at Array.reduce (<anonymous>)
    at resolveDependencies (C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\DeltaBundler\traverseDependencies.js:411:33)
    at processModule (C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\DeltaBundler\traverseDependencies.js:140:31)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async addDependency (C:\Users\abdou\source\Mobile Apps\Test app\AwesomeTSProject\node_modules\metro\src\DeltaBundler\traverseDependencies.js:230:18)

所以我问是否可以将 Azure Web PubSub 服务与 React Native 一起使用?或者我应该使用 ws包与 PubSub 服务通信?如果是这样,怎么会这样?

最佳答案

So I'm asking is not possible to use Azure Web PubSub service with React Native, or should I just use the ws package to communicate with the PubSub service? And if so how so?

根据vicancy :

  • 由于 React Native 应用程序是纯 WebSocket 客户端,因此不需要使用 @azure/web-pubsub 包,只需使用ws包与服务进行通信。

  • 在客户端存储连接字符串并不安全。

  • WebSocket 客户端获取 URL 以连接到 Azure Web PubSub 的常用方法类似于示例步骤 2 中提到的工作流程: Add/Negotiate an API to the server to generate the token

更新的答案:

根据abdou-tech :

  • 不需要 @azure/web-pubsub,该包适用于想要连接到 Azure PubSub 服务的 Node 客户端。

注意:ws包也无法在 React Native 或它需要 Node 运行时的浏览器中工作。您可以使用 native WebSocket连接到服务的对象

关于node.js - 如何在 React Native 中使用 Azure PubSub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73055397/

相关文章:

node.js - 缩进无效。 Jade 模板

c# - Azure 服务总线的共享访问策略编程创建

azure - 比较两个表以在 Azure 数据工厂中动态查找缺失的行

android - 如何使用全局本地 gradle 安装而不是每次都下载压缩包装?

android - React Native yarn android 工作正常,但 ./gradlew assembleRelease 构建在更新compileSdkVersion和targetSdkVersion到31后失败

html - 从nodejs读取css文件

node.js - Vue.js 的 node_modules 规模巨大(初学者问题)

mysql - Shiny 的服务器 - 安排 mysql 查询而不是每次加载应用程序时运行?

android - Android未在React Native中加载Webview

node.js - 数据库是否附加到 heroku 中的测功机?