This commit is contained in:
zhangzheng
2026-03-10 19:09:41 +08:00
parent ca23a771b3
commit b4c41e42c9
4 changed files with 73 additions and 46 deletions

View File

@@ -2,18 +2,11 @@
* WebSocket管理
* 管理WebSocket连接处理WebSocket事件
*/
import { RenderStreaming } from "../../module/renderstreaming.js"; // WebRTC连接管理
class WebSocketManager {
constructor(url = null) {
this.url = url || this.getDefaultWebSocketUrl();
this.socket = null;
constructor() {
this.isConnected = false;
this.listeners = new Map();
this.reconnectAttempts = 0;
this.maxReconnectAttempts = 5;
this.reconnectDelay = 1000;
this.connectionId = null;
this.heartbeatInterval = null;
}
/**
@@ -28,36 +21,33 @@ class WebSocketManager {
/**
* 连接WebSocket
*/
connect() {
init() {
try {
this.socket = new WebSocket(this.url);
this.socket.onopen = () => {
RenderStreaming.onConnect = () => {
console.log('WebSocket connected');
this.isConnected = true;
this.reconnectAttempts = 0;
// 生成连接ID
this.connectionId = this.generateConnectionId();
// 发送连接消息
this.sendConnectMessage();
// 启动心跳
this.startHeartbeat();
// // 发送连接消息
// this.sendConnectMessage();
this.emit('connect');
// // 启动心跳
this.startHeartbeat();
// this.emit('connect');
};
this.socket.onclose = () => {
RenderStreaming.onDisconnect = () => {
console.log('WebSocket disconnected');
this.isConnected = false;
this.stopHeartbeat();
this.emit('disconnect');
this.attemptReconnect();
//this.emit('disconnect');
//this.attemptReconnect();
};
this.socket.onmessage = (event) => {
RenderStreaming.onmessage = (event) => {
try {
const message = JSON.parse(event.data);
this.handleMessage(message);
@@ -126,6 +116,7 @@ class WebSocketManager {
*/
handleMessage(message) {
if (message.type) {
console.log('Received message:', message);
switch (message.type) {
case 'user-joined':
this.emit('user-joined', message.data);
@@ -165,6 +156,9 @@ class WebSocketManager {
case 'candidate':
this.emit('candidate', message.data);
break;
case 'chat-message':
this.emit('chat-message', message.data);
break;
default:
// 处理旧格式消息
if (message.event) {