uniapp-signalr
v10.0.1
Published
ASP.NET Core SignalR Client, Add Uniapp miniprogram support by Jimifish
Readme
uniapp-signalr
ASP.NET Core SignalR JavaScript client with mini-program support.
Based on the official @microsoft/signalr v10.0.0 source code, with added support for mini-program platforms (uniapp / WeChat / Alipay / ByteDance / etc).
Installation
npm install uniapp-signalr
# or
yarn add uniapp-signalr
# or
pnpm add uniapp-signalrQuick Start
Mini-program (uniapp / WeChat / Alipay / ...)
import { HubConnectionBuilder, configureMiniProgram, LogLevel } from "uniapp-signalr";
// uniapp
const connection = new HubConnectionBuilder()
.withUrl("https://example.com/hub", {
...configureMiniProgram(uni),
})
.configureLogging(LogLevel.Information)
.build();
// WeChat native mini-program — just swap uni → wx
const connection = new HubConnectionBuilder()
.withUrl("https://example.com/hub", {
...configureMiniProgram(wx),
})
.build();
connection.on("ReceiveMessage", (user, message) => {
console.log(`${user}: ${message}`);
});
connection.start()
.then(() => connection.invoke("SendMessage", "Hello"));Note: Mini-program environments must use absolute URLs (e.g.
https://example.com/hub), relative URLs are not supported.
Browser / Node.js
In non-mini-program environments, usage is the same as the official @microsoft/signalr:
import { HubConnectionBuilder } from "uniapp-signalr";
const connection = new HubConnectionBuilder()
.withUrl("/hub")
.build();API
configureMiniProgram(platform, logger?)
Returns pre-configured httpClient and WebSocket options for the given mini-program platform. Spread the result into withUrl options.
| Param | Type | Description |
|-------|------|-------------|
| platform | MiniProgramPlatform | The platform global object — uni, wx, my, tt, etc. |
| logger | ILogger (optional) | Custom logger for the HTTP client. Defaults to NullLogger. |
Advanced: Manual Configuration
If you need more control, you can configure the HTTP client and WebSocket separately:
import {
HubConnectionBuilder,
MiniProgramHttpClient,
createMiniProgramWebSocket,
ConsoleLogger,
LogLevel,
} from "uniapp-signalr";
const logger = new ConsoleLogger(LogLevel.Information);
const connection = new HubConnectionBuilder()
.withUrl("https://example.com/hub", {
httpClient: new MiniProgramHttpClient(logger, wx),
WebSocket: createMiniProgramWebSocket(wx),
})
.build();Supported Platforms
| Platform | Global Object | Tested |
|----------|--------------|--------|
| uniapp | uni | Yes |
| WeChat | wx | Yes |
| Alipay | my | - |
| ByteDance| tt | - |
Any platform that implements request() and connectSocket() with the standard mini-program API conventions is supported.
Compared to @microsoft/signalr
This package is a minimal fork. The only source code modification is in HttpConnection._resolveNegotiateUrl(), which uses manual string concatenation instead of URL/URLSearchParams (unavailable in mini-program environments). All other mini-program support is implemented externally via SignalR's built-in httpClient and WebSocket extension points.
Documentation
- ASP.NET Core SignalR Documentation
- SignalR JavaScript Client API Reference
- Azure SignalR Service Serverless Guide
License
MIT
