flutter中的websocket概念
目的:实现客户端与服务端的实时通讯,基于TCP协议
与keep-alive区别:keep-alive机制会连接一小段时间,最终会断开,ws协议不会断开
原理:通过一条特殊的http协议请求进行握手后,服务端支持ws协议,则进行协议升级,利用http创建的tcp连接,实现长连接。
步骤分解:
-
连接服务器
1final channel = IOWebSocketChannel.connect('ws://echo.websocket.org'); -
关闭连接
1channel.sink.close(); -
监听服务器
- StreamBuilder是一个组件,收到一个stream就刷新界面
1 2 3 4 5 6new StreamBuilder( stream: widget.channel.stream, builder: (context, snapshot) { return new Text(snapshot.hasData ? '${snapshot.data}' : ''); }, ); -
发送消息
1channel.sink.add('Hello!');
完整demo
|
|
数据类型:发送的过程中数据以frame形式存在,每一个frame都由opcode字段指定类型,客户端在收到消息时已经知道类型,会自动转换,streamBuilder.snapshot.data如果是文本,类型是string,二进制数据,类型是List
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/flutter/flutter-websocket/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com