音视频通话功能完成(P2P)
已知问题: 文件无法发送
This commit is contained in:
@@ -48,20 +48,46 @@ class WebSocketManager {
|
||||
|
||||
this.ws.onmessage = (event) => {
|
||||
try {
|
||||
const payload: WebSocketMessage = JSON.parse(event.data)
|
||||
// 处理可能的多行JSON或消息分割
|
||||
const data = event.data.toString().trim()
|
||||
|
||||
// 接收clientId
|
||||
if (payload.clientId) {
|
||||
this.clientId = payload.clientId
|
||||
console.log('Received clientId:', this.clientId)
|
||||
}
|
||||
// 尝试按行分割处理多个JSON对象
|
||||
const lines = data.split('\n').filter(line => line.trim())
|
||||
|
||||
// 处理接收消息
|
||||
if (payload.request_type === 'receive_message' && payload.data) {
|
||||
this.handleMessage(payload.data)
|
||||
for (const line of lines) {
|
||||
try {
|
||||
const payload: WebSocketMessage = JSON.parse(line)
|
||||
|
||||
// 接收clientId
|
||||
if (payload.clientId) {
|
||||
this.clientId = payload.clientId
|
||||
console.log('Received clientId:', this.clientId)
|
||||
}
|
||||
|
||||
// 处理接收消息
|
||||
if (payload.request_type === 'receive_message' && payload.data) {
|
||||
this.handleMessage(payload.data)
|
||||
}
|
||||
} catch (lineError) {
|
||||
// 如果单行解析失败,尝试解析整个数据
|
||||
if (lines.length === 1) {
|
||||
const payload: WebSocketMessage = JSON.parse(data)
|
||||
|
||||
if (payload.clientId) {
|
||||
this.clientId = payload.clientId
|
||||
console.log('Received clientId:', this.clientId)
|
||||
}
|
||||
|
||||
if (payload.request_type === 'receive_message' && payload.data) {
|
||||
this.handleMessage(payload.data)
|
||||
}
|
||||
} else {
|
||||
console.warn('Failed to parse WebSocket message line:', line, lineError)
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('WebSocket message parse error:', error)
|
||||
console.error('WebSocket message parse error:', error, 'Data:', event.data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,13 +166,15 @@ class WebSocketManager {
|
||||
* 处理接收到的消息
|
||||
*/
|
||||
private handleMessage(message: ChatMessage) {
|
||||
// 信令消息(message_type = 6)
|
||||
// 信令消息(message_type = 6)- 路由到signalHandlers,不路由到messageHandlers
|
||||
if (message.message_type === 6) {
|
||||
console.log('[WebSocket] Routing signaling message:', message.call_status, message.call_id)
|
||||
this.signalHandlers.forEach(handler => handler(message))
|
||||
} else {
|
||||
// 普通消息
|
||||
this.messageHandlers.forEach(handler => handler(message))
|
||||
return // 重要:信令消息不进入普通消息处理流程
|
||||
}
|
||||
|
||||
// 普通消息 - 路由到messageHandlers
|
||||
this.messageHandlers.forEach(handler => handler(message))
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user