HarmonyOS鸿蒙Next中ArkTS使用WebSocket连接报错{"code":200,"data":"0"}
HarmonyOS鸿蒙Next中ArkTS使用WebSocket连接报错{“code”:200,“data”:“0”}
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@kit.BasicServicesKit';
export class WebSocketManager {
private ws: webSocket.WebSocket = webSocket.createWebSocket();
private messageCallback?: (data: string) => void;
constructor(params: string) {
this.setupEventListeners();
//ccUserId 为服务器约定的必传参数。
this.ws.connect('ws://183.6.145.89:9081', { header: { ccUserId: params } }, (err: BusinessError) => {
if (err) {
console.log(JSON.stringify(err), '连接失败');
} else {
console.log('连接成功,等待响应...');
}
});
// this.ws.connect('ws://183.6.145.89:9081?ccUserId='+params,(err: BusinessError,val:boolean)=>{
// if(err){
// console.log(JSON.stringify(err),'连接失败');
// }else {
// console.log(err+'连接成功');
// }
// })
}
private setupEventListeners() {
this.ws.on('open', (err: BusinessError) => {
console.log(JSON.stringify(err), 'WebSocket连接信息');
});
this.ws.on('message', (err: BusinessError, data: string | ArrayBuffer) => {
if (!err) {
console.log(data as string, 'addMessage');
if (this.messageCallback) {
this.messageCallback(data as string)
}
} else {
console.log(err + 'errerr');
}
});
this.ws.on('close', () => {
console.log('连接已关闭');
});
this.ws.on('error', (err: BusinessError) => {
console.error('WebSocket错误', JSON.stringify(err));
});
}
// 设置消息接收回调
public onMessage(callback: (data: string) => void): void {
this.messageCallback = callback;
}
// 关闭连接
public close(): void {
this.ws.close({ code: 1000, reason: '正常关闭' }, (err: BusinessError) => {
if (!err) {
console.log('连接已关闭');
}
});
}
}
运行时this.connect 输出 为连接成功,等待响应…
但是服务器报错WebSocket错误 {“code”:200,“data”:“0”}
IOS端使用的也是类似方法调用 能正常交互
更多关于HarmonyOS鸿蒙Next中ArkTS使用WebSocket连接报错{"code":200,"data":"0"}的实战教程也可以访问 https://www.itying.com/category-93-b0.html
楼主手机端系统版本多少?
更多关于HarmonyOS鸿蒙Next中ArkTS使用WebSocket连接报错{"code":200,"data":"0"}的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中使用ArkTS连接WebSocket时,收到{"code":200,"data":"0"}
表示连接已成功建立。该状态码对应WebSocket标准协议中的正常连接确认,通常无需额外处理。若后续通信异常,请检查服务端消息格式或网络稳定性。
根据你提供的错误信息 {"code":200,"data":"0"}
,这通常是WebSocket连接建立后服务器返回的特定响应,而不是标准的连接错误。在HarmonyOS Next的ArkTS中,WebSocket连接成功但服务器返回此数据,可能表示服务器端对连接参数或协议有特定要求。
检查你的代码,注意到在connect
方法中使用了header传递ccUserId
,但服务器可能期望该参数通过查询字符串(如注释中的替代方案)或其他方式传递。由于iOS使用类似方法可以正常工作,建议对比两端实际发送的请求细节,确保参数传递方式一致。
另外,确认网络权限已在module.json5
中正确声明:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
}
如果问题持续,使用抓包工具(如Wireshark)对比HarmonyOS和iOS端的WebSocket握手阶段,查看请求头差异,特别是ccUserId
的传递方式。