@dreamonkey/vue-signalr

中文文档
1.2.0发布于 2024/09/11MITTypeScriptCommonJS零依赖近 30 天下载 1.4万

Vue 3 的信号R插件

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. 类型安全
  4. 方法再规划
  5. 处理错误
  6. 今后可能采取的步骤
  7. 贷项

微信号器

Vue3 插件, 将信号R 和提供者的打字更严格 .

安装

安装此软件包和信号端依赖

$ yarn add @dreamonkey/vue-signalr @microsoft/signalr

应用提供 a 的插件 HubConnection 实例

import { VueSignalR } from "@dreamonkey/vue-signalr";
import { HubConnectionBuilder } from "@microsoft/signalr";
import { createApp } from "vue";
import App from "./App.vue";

// Create your connection
// See https://docs.microsoft.com/en-us/javascript/api/@microsoft/signalr/hubconnectionbuilder
const connection = new HubConnectionBuilder()
  .withUrl("http://localhost:5000/signalr")
  .build();

createApp(App).use(VueSignalR, { connection }).mount("#app");

使用量

import { useSignalR } from "@dreamonkey/vue-signalr";
import { inject } from "vue";

export default {
  setup() {
    const signalr = useSignalR();

    signalr.invoke("SendMessage", { message });

    signalr.on("MessageReceived", ({ message }) => {
      /* do stuff */
    });
  },
};

虽然SignalR没有区分客户端和服务器端的方法,但是在这个包中我们把前者称为"Events",而后者称为"Commands".

命令可以使用 signalr.invoke(),而事件可以启用或禁用 signalr.on() 财务报告和审定财务报表 signalr.off()

取消订阅

所有事件您创建一个用于使用的收听器 signalr.on() 在不再使用时必须取消订阅,以避免内存出漏和异常的代码行为. 如果你打电话 signalr.on() 在Vue部分内 setup 范围,听众将被自动禁用 onBeforeUnmount 钩. 可以通过 autoOffInsideComponentScope 插件选项 .

如果您禁用它, 或者您在组件范围外启动一个听器, 您需要手动解禁它 signal.off() 和提供 相同的收听器函数引用 对它. 不提供它会将所有听众从提供的事件中移除

const messageReceivedCallback = (message) => console.log(message.prop);

signalr.on("MessageReceived", messageReceivedCallback);

signalr.off("MessageReceived", messageReceivedCallback); // Remove this listener
signalr.off("MessageReceived"); // Remove all listeners on `MessageReceived` event

类型安全

命令和事件名称及有效载荷通过专用接口的类型的增强加以登记(SignalREvents 财务报告和审定财务报表 SignalRCommands改为: @dreamonkey/vue-signalr 范围. 这些类型后来用于提供自动补全.

软件包也使用纯字符串, 您不需要注册命令/ 事件打字

import "@dreamonkey/vue-signalr";

interface MessageReceivedPayload {
  message: string;
}

interface SendMessagePayload {
  message: string;
}

declare module "@dreamonkey/vue-signalr" {
  interface SignalREvents {
    // Define an event, its payload is a single parameter of type `MessageReceivedPayload`
    MessageReceived: MessageReceivedPayload;
    // Define an event, its payload is composed by 0 or more parameters of type `MessageReceivedPayload`
    MultipleMessagesReceived: MessageReceivedPayload[];
    // Define an event, its payload is composed by exactly 2 parameters of type `MessageReceivedPayload`
    TwoMessagesReceived: [MessageReceivedPayload, MessageReceivedPayload];
    // Define an event with no payload
    MainTopicJoined: false;
  }

  interface SignalRCommands {
    // Define a command and its payload
    SendMessage: SendMessagePayload;
    // Define a command with no payload
    JoinMainTopic: false;
  }
}

方法再规划

如果您需要重新绘制命令或事件名称, 您可以使用 remapMethod 或者说 remapMethods 帮助者

import { remapMethod } from "@dreamonkey/vue-signalr";

remapMethod("receiveMessageWithStrangeMethodName", "MessageReceived");

remapMethods([
  ["legacyTopic2Joined", "MainTopicJoined"],
  ["createNewMessage", "SendMessage"],
]);

处理错误

您可以对连接/重联错误作出反应, 提供 failFn 选项输入插件选项

import { VueSignalR } from "@dreamonkey/vue-signalr";
import { createApp } from "vue";
import App from "./App.vue";

const connection = new HubConnectionBuilder()
  .withUrl("http://localhost:5000/signalr")
  .build();

createApp(App)
  .use(VueSignalR, {
    connection,
    failFn: () => {
      /* do stuff */
    },
  })
  .mount("#app");

今后可能采取的步骤

贷项

此软件包的灵感来自 https://github.com/quangdaon/vue-signalr (中文(简体) )

版本与发布记录

@dreamonkey/vue-signalr 共发布 7 个版本,首次发布于 2021/07/16;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.2.0latest2024/09/112 年前
1.1.02023/04/033 年前
1.0.12022/01/114 年前
1.0.02022/01/114 年前
0.0.32021/08/235 年前
0.0.22021/08/235 年前

关于 @dreamonkey/vue-signalr 的常见问题

@dreamonkey/vue-signalr 是什么?

Vue 3 的信号R插件

如何安装 @dreamonkey/vue-signalr?

在项目目录运行 npm install @dreamonkey/vue-signalr,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vue(^3.0.0)、@microsoft/signalr(^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@dreamonkey/vue-signalr 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dreamonkey/vue-signalr 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@dreamonkey/vue-signalr 可以商用吗?

@dreamonkey/vue-signalr 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dreamonkey/vue-signalr 的下载量有多少?

根据 npm 官方下载统计,@dreamonkey/vue-signalr 在 2026/10/13 – 2026/11/11 这 30 天内被下载 13,695 次,日均约 457 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dreamonkey/vue-signalr 还在维护吗?

最新版本 1.2.0 发布于 2024/09/11(2 年前);至今共发布 7 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/07/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。