dart的Websocket为什么找不到onOpen方法?

我主要使用的是JAVA,而JAVA使用Websocket时,Websocket一定会有个onOpen方法。

@ClientEndpoint
public class WebsocketListener {
    @OnOpen
    public void onOpen(Session session) throws IOException {

    }

    @OnMessage
    public void onMessage(ByteBuffer byteBuffer) {
       
    }

    @OnClose
    public void onClose(Session session, CloseReason closeReason) {
       
    }

    @OnError
    public void onError(Session session, Throwable t) {
        
    }
}


我用的第三方Websocket框架也一定会有onOpen方法。
我就下意识的认为Websocket一定会有onOpen方法。
直到我遇到了dart。
我对dart不是很了解,函数的使用方法都是在网上搜的,所以很容易遇到一些简单的问题。

var socket = await WebSocket.connect(url);
//监听
socket.listen((data) {
 
}, onDone: () {
  print('WebSocket断开');
},onError: (e){
  print("服务异常:$e");
});

可以看到socket.listen函数并没有提供onOpen方法,我点进socket查看函数,确实没有onOpen的处理方法。
然后找了一个第三方框架,也是一样完全找不到…
后来我反应过来了…
我突然觉得我真的是个小丑…

dart的WebSocket.connect(url)函数本身就是异步的。
await 等待返回结果,就表示已经得到服务器响应了,后面只需要判断socket状态是不是open就可以了。

var socket = await WebSocket.connect(url);
if(socket.readyState == WebSocket.open){
	//监听
	socket.listen((data) {
	
	}, onDone: () {
	  print('WebSocket断开');
	},onError: (e){
	  print("服务异常:$e");
	});
}

如此简单的问题,我居然找了半天的open函数。


好了,又水了一篇。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码鹿的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值