supabase/realtime| 功能 | v1版 | v2版 | 状态 |
|---|---|---|---|
| Postgres 数据变更 | ✔ | ✔ | 正式可用 |
| 广播(Broadcast) | ✔ | 测试版 | |
| 在线状态(Presence) | ✔ | 测试版 |
本仓库主要维护版本2,版本1的代码和Docker镜像仍可访问。最新Docker镜像可前往 [***] 获取。
代码库处于活跃开发阶段,文档持续更新。欢迎试用并通过创建issue反馈意见,关注发布记录获取更新通知,喜欢的话别忘了点星标!
这是一个基于Elixir和Phoenix Framework构建的服务器,支持以下功能:
详细介绍可查看Supabase Realtime指南。
服务器不保证每条消息都能送达客户端,使用时请注意这一点。
可查看多人协作演示,演示代码位于仓库的demo目录。
通过docker-compose.yml启动Postgres数据库和Realtime服务器容器,示例命令:
bashdocker-compose -f docker-compose.yml up
注意
Supabase在生产环境中使用独立数据库管理租户,但本地开发时通过docker-compose.yml自动创建_realtime模式简化配置。
启动后会自动添加一个默认租户,可通过查询数据库的_realtime.tenants和_realtime.extensions表确认。
如需添加自己的租户,发送POST请求到服务器。需修改name和external_id,其他参数可按需调整:
bashcurl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJpYXQiOjE2NzEyMzc4NzMsImV4cCI6MTcwMjc3Mzk5MywiYXVkIjoiIiwic3ViIjoiIn0._ARixa2KFUVsKBf3UGR90qKLCpGjxhKcXY4akVbmeNQ' \ -d $'{ "tenant" : { "name": "realtime-dev", "external_id": "realtime-dev", "jwt_secret": "a1d99c8b-91b6-47b2-8f3c-aa7d9a9ad20f", "extensions": [ { "type": "postgres_cdc_rls", "settings": { "db_name": "postgres", "db_host": "host.docker.internal", "db_user": "postgres", "db_password": "postgres", "db_port": "5432", "region": "us-west-1", "poll_interval_ms": 100, "poll_max_record_bytes": ***, "ip_version": 4 } ] } } }' \ [***]> **注意** > 请求头中的`Authorization`令牌使用`docker-compose.yml`中`API_JWT_SECRET`配置的密钥签名。 ### 监听Postgres变更 1. 创建测试表: ```sql create table test ( id serial primary key );
supabase_realtime发布:sqlalter publication supabase_realtime add table test;
可通过以下方式测试广播、在线状态和Postgres变更功能:
@supabase/realtime-js)WebSocket URL需包含租户的external_id(作为子域名),且令牌需使用租户的jwt_secret签名。
默认租户示例:
ws://realtime-dev.localhost:4000/socket(端口需与开发环境一致)eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDMwMjgwODcsInJvbGUiOiJwb3N0Z3JlcyJ9.tz_XJ89gd6bN8MBpCl7afvPrZiBH6RB65iA1FadPT3Y(包含exp和role字段,role为数据库角色)Realtime服务器当前与Fly.io耦合紧密,以下是关键环境变量说明:
| 变量名 | 类型 | 说明 |
|---|---|---|
| PORT | {数字} | 客户端/监听器连接的端口 |
| DB_HOST | {字符串} | 数据库主机URL |
| DB_PORT | {数字} | 数据库端口 |
| DB_USER | {字符串} | 数据库用户名 |
| DB_PASSWORD | {字符串} | 数据库密码 |
| DB_NAME | {字符串} | Postgres数据库名 |
| DB_ENC_KEY | {字符串} | 加密_realtime.tenants和_realtime.extensions表敏感字段的密钥(推荐16字符) |
| API_JWT_SECRET | {字符串} | 用于签名管理租户HTTP请求令牌的密钥 |
| MAX_CONNECTIONS | {字符串} | WebSocket连接软上限(默认***) |
| NUM_ACCEPTORS | {字符串} | 处理WebSocket连接请求的进程数(默认100) |
| DB_POOL_SIZE | {字符串} | 数据库连接池大小(默认5) |
WebSocket连接通过对称JWT验证授权,支持以下签名算法:HS256、HS384、HS512。
exp(过期时间)和role(数据库角色)字段,服务器会自动检查过期时间。JWT_CLAIM_VALIDATORS设置额外验证规则,例如:{'iss': 'Issuer', 'nbf': ***},则JWT的iss需等于“Issuer”,nbf需等于***。参考Realtime客户端库的使用说明,例如@supabase/realtime-js的Usage部分。
本仓库采用Apache 2.0许可证。
| 功能 | v1版 | v2版 | 状态 |
|---|---|---|---|
| Postgres 数据变更 | ✔ | ✔ | 正式可用 |
| 广播(Broadcast) | ✔ | 测试版 | |
| 在线状态(Presence) | ✔ | 测试版 |
本仓库主要维护版本2,版本1的代码和Docker镜像仍可访问。最新Docker镜像可前往 [***] 获取。
代码库处于活跃开发阶段,文档持续更新。欢迎试用并通过创建issue反馈意见,关注发布记录获取更新通知,喜欢的话别忘了点星标!
这是一个基于Elixir和Phoenix Framework构建的服务器,支持以下功能:
详细介绍可查看Supabase Realtime指南。
服务器不保证每条消息都能送达客户端,使用时请注意这一点。
可查看多人协作演示,演示代码位于仓库的demo目录。
通过docker-compose.yml启动Postgres数据库和Realtime服务器容器,示例命令:
bashdocker-compose -f docker-compose.yml up
注意
Supabase在生产环境中使用独立数据库管理租户,但本地开发时通过docker-compose.yml自动创建_realtime模式简化配置。
启动后会自动添加一个默认租户,可通过查询数据库的_realtime.tenants和_realtime.extensions表确认。
如需添加自己的租户,发送POST请求到服务器。需修改name和external_id,其他参数可按需调整:
bashcurl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJpYXQiOjE2NzEyMzc4NzMsImV4cCI6MTcwMjc3Mzk5MywiYXVkIjoiIiwic3ViIjoiIn0._ARixa2KFUVsKBf3UGR90qKLCpGjxhKcXY4akVbmeNQ' \ -d $'{ "tenant" : { "name": "realtime-dev", "external_id": "realtime-dev", "jwt_secret": "a1d99c8b-91b6-47b2-8f3c-aa7d9a9ad20f", "extensions": [ { "type": "postgres_cdc_rls", "settings": { "db_name": "postgres", "db_host": "host.docker.internal", "db_user": "postgres", "db_password": "postgres", "db_port": "5432", "region": "us-west-1", "poll_interval_ms": 100, "poll_max_record_bytes": ***, "ip_version": 4 } ] } } }' \ [***]> **注意** > 请求头中的`Authorization`令牌使用`docker-compose.yml`中`API_JWT_SECRET`配置的密钥签名。 ### 监听Postgres变更 1. 创建测试表: ```sql create table test ( id serial primary key );
supabase_realtime发布:sqlalter publication supabase_realtime add table test;
可通过以下方式测试广播、在线状态和Postgres变更功能:
@supabase/realtime-js)WebSocket URL需包含租户的external_id(作为子域名),且令牌需使用租户的jwt_secret签名。
默认租户示例:
ws://realtime-dev.localhost:4000/socket(端口需与开发环境一致)eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDMwMjgwODcsInJvbGUiOiJwb3N0Z3JlcyJ9.tz_XJ89gd6bN8MBpCl7afvPrZiBH6RB65iA1FadPT3Y(包含exp和role字段,role为数据库角色)Realtime服务器当前与Fly.io耦合紧密,以下是关键环境变量说明:
| 变量名 | 类型 | 说明 |
|---|---|---|
| PORT | {数字} | 客户端/监听器连接的端口 |
| DB_HOST | {字符串} | 数据库主机URL |
| DB_PORT | {数字} | 数据库端口 |
| DB_USER | {字符串} | 数据库用户名 |
| DB_PASSWORD | {字符串} | 数据库密码 |
| DB_NAME | {字符串} | Postgres数据库名 |
| DB_ENC_KEY | {字符串} | 加密_realtime.tenants和_realtime.extensions表敏感字段的密钥(推荐16字符) |
| API_JWT_SECRET | {字符串} | 用于签名管理租户HTTP请求令牌的密钥 |
| MAX_CONNECTIONS | {字符串} | WebSocket连接软上限(默认***) |
| NUM_ACCEPTORS | {字符串} | 处理WebSocket连接请求的进程数(默认100) |
| DB_POOL_SIZE | {字符串} | 数据库连接池大小(默认5) |
WebSocket连接通过对称JWT验证授权,支持以下签名算法:HS256、HS384、HS512。
exp(过期时间)和role(数据库角色)字段,服务器会自动检查过期时间。JWT_CLAIM_VALIDATORS设置额外验证规则,例如:{'iss': 'Issuer', 'nbf': ***},则JWT的iss需等于“Issuer”,nbf需等于***。参考Realtime客户端库的使用说明,例如@supabase/realtime-js的Usage部分。
本仓库采用Apache 2.0许可证。






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务