uniapp tcp客户端 onopen事件如何使用
在uniapp中创建TCP客户端时,onOpen事件应该如何正确使用?我按照文档创建了TCP连接,但发现onOpen事件没有被触发。请问需要特别设置什么参数吗?或者是我的用法有问题?能否提供一个完整的示例代码?
2 回复
在uniapp中,使用TCP客户端的onopen事件很简单。创建TCP连接后,监听onopen事件即可:
const tcp = uni.requireNativePlugin('dc-tcp')
tcp.onopen = function() {
console.log('TCP连接已建立')
// 连接成功后发送数据
tcp.send('Hello Server')
}
当TCP连接成功建立时,会自动触发onopen回调函数。
在 UniApp 中,TCP 客户端通过 uni.connectSocket 方法建立连接后,可以使用 onOpen 事件监听连接成功。以下是具体步骤和示例代码:
实现步骤:
- 创建 TCP 连接:使用
uni.connectSocket配置服务器地址和端口。 - 监听 onOpen 事件:通过
onSocketOpen方法监听连接成功。 - 处理连接逻辑:在回调函数中执行发送数据等操作。
示例代码:
// 创建 TCP 连接
const socketTask = uni.connectSocket({
url: 'ws://your-server-ip:port', // 替换为实际 TCP 服务器地址
success: () => {
console.log('Socket 连接创建成功');
},
fail: (err) => {
console.error('Socket 连接失败:', err);
}
});
// 监听连接打开事件
uni.onSocketOpen((res) => {
console.log('TCP 连接已打开', res);
// 连接成功后发送数据示例
uni.sendSocketMessage({
data: 'Hello Server',
success: () => {
console.log('消息发送成功');
}
});
});
// 可选:监听消息接收
uni.onSocketMessage((res) => {
console.log('收到服务器消息:', res.data);
});
// 监听错误
uni.onSocketError((err) => {
console.error('Socket 错误:', err);
});
注意事项:
- 协议限制:UniApp 的
connectSocket默认使用 WebSocket(ws://或wss://),如需原生 TCP,需使用条件编译调用原生 API(如 Android 的 Java Socket)。 - 平台差异:H5 端仅支持 WebSocket,App 端可通过
plus.socket实现原生 TCP(需自行封装)。 - 连接管理:使用
socketTask可主动关闭连接(socketTask.close())。
扩展原生 TCP 方法(App 端):
如需纯 TCP,可参考以下片段(仅 App 生效):
// #ifdef APP-PLUS
const socket = plus.socket.createSocket('tcp');
socket.connect('server-ip', port, () => {
console.log('TCP 连接成功');
socket.write('Hello TCP Server');
});
// #endif
根据实际需求选择合适方案,WebSocket 适用于跨平台,原生 TCP 适用于 App 端特定场景。

