PeerServer是PeerJS的信令服务器,用于帮助PeerJS客户端建立直接的P2P连接,数据传输不经过服务器代理。该Docker镜像提供即用型部署方案,支持多种配置选项,适用于需要建立P2P通信的应用场景。
适用于需要建立P2P连接的各类应用,如:
基本运行
shdocker run -p 9000:9000 -d peerjs/peerjs-server
自定义端口和路径
shdocker run -p 8080:8080 -d peerjs/peerjs-server --port 8080 --path /myapp
Kubernetes部署
shkubectl run peerjs-server --image=peerjs/peerjs-server --port 9000 --expose -- --port 9000 --path /myapp
| CLI选项 | JS选项 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|---|
--port, -p | port | 监听端口(数字) | 是 | |
--key, -k | key | 连接密钥(字符串),客户端必须提供此密钥才能调用API方法 | 否 | "peerjs" |
--path | path | 路径(字符串),服务器响应根URL+路径的请求。例如:设置path为/myapp并通过peerjs --port 9000 --path /myapp运行服务器,访问[***] | 否 | "/" |
--proxied | proxied | 若PeerServer位于反向代理后,设为true(布尔值) | 否 | false |
--expire_timeout, -t | expire_timeout | 消息过期时间(毫秒),超时后发送者将收到EXPIRE消息 | 否 | 5000 |
--alive_timeout | alive_timeout | 连接超时时间(毫秒),若服务器未从客户端收到任何数据(包括pong消息),将断开客户端连接 | 否 | 60000 |
--concurrent_limit, -c | concurrent_limit | WebSocket服务器允许的最大客户端连接数(数字) | 否 | 5000 |
--sslkey | sslkey | SSL密钥路径(字符串) | 否 | |
--sslcert | sslcert | SSL证书路径(字符串) | 否 | |
--allow_discovery | allow_discovery | 允许使用GET /peers HTTP API获取所有已连接客户端ID列表(布尔值) | 否 | |
--cors | corsOptions | 允许访问服务器的CORS源 | 否 | |
generateClientId | 生成客户端ID的函数(() => string),用于调用/id API方法时生成随机客户端ID | 否 | uuid/v4 |
通过传递PEM编码的证书和密钥启用HTTPS:
javascriptconst fs = require("fs"); const { PeerServer } = require("peer"); const peerServer = PeerServer({ port: 9000, ssl: { key: fs.readFileSync("/path/to/ssl/key.key"), cert: fs.readFileSync("/path/to/ssl/certificate.crt"), }, });
也可传递其他HTTPS选项,如SNICallback:
javascriptconst fs = require("fs"); const { PeerServer } = require("peer"); const peerServer = PeerServer({ port: 9000, ssl: { SNICallback: (servername, cb) => { // 自定义SNI处理逻辑 }, }, });
若PeerServer位于反向代理后,需设置proxied选项:
javascriptconst { PeerServer } = require("peer"); const peerServer = PeerServer({ port: 9000, path: "/myapp", proxied: true, // 传递给express的trust proxy设置 });
默认使用uuid/v4生成客户端ID,可通过generateClientId选项自定义:
javascriptconst { PeerServer } = require("peer"); const customGenerationFunction = () => (Math.random().toString(36) + "0000000000000000000").substr(2, 16); const peerServer = PeerServer({ port: 9000, path: "/myapp", generateClientId: customGenerationFunction, });
访问[***]
javascriptconst express = require("express"); const { ExpressPeerServer } = require("peer"); const app = express(); app.get("/", (req, res) => res.send("Hello world!")); const server = app.listen(9000); const peerServer = ExpressPeerServer(server, { path: "/myapp", }); app.use("/peerjs", peerServer);
访问[***]
connection:当客户端连接到服务器时触发javascriptpeerServer.on('connection', (client) => { /* 处理连接事件 */ });
disconnect:当客户端断开连接或无法访问时触发javascriptpeerServer.on('disconnect', (client) => { /* 处理断开事件 */ });
shdocker build -t my-peerjs-server https://github.com/peers/peerjs-server.git
运行自定义镜像:
shdocker run -p 9000:9000 -d my-peerjs-server
html<script> const peer = new Peer("someid", { host: "localhost", port: 9000, path: "/myapp", }); </script>
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务