websocket手机端无法通信
2016-07-27 16:01
281 查看
之前做一个项目需要手机与内网机器通信
由于手机端由h5完成,所以采用websocket的方式
在电脑上调试时一切正常
用手机访问时却在握手时中断连接,握手不成功
后来研究了一下握手协议
如下
("HTTP/1.1 101 Switching Protocols\r\n");
("Upgrade: websocket\r\n");
("Connection: Upgrade\r\n");
("Server:beetle websocket server\r\n");
("Access-Control-Allow-Credentials:true\r\n");
("Accept-Encoding: gzip, deflate, sdch\r\n");
("Accept-Language: zh-CN,zh;q=0.8\r\n");
("Access-Control-Allow-Headers:content-type\r\n");
("Sec-WebSocket-Accept:" + key + "\r\n");
在这里也没有发现问题...
为了实现一个猜测,在最后一条加了一个\r
最后变成
("Sec-WebSocket-Accept:" + key + "\r\n\r");
然后就握手成功,通信OK
问题到这里就解决了。。。。 个人猜测可能是手机端兼容上的问题。 既然要求在最后一定要加\r\n,那也许是手机端还需要有一个结束标识?
由于手机端由h5完成,所以采用websocket的方式
在电脑上调试时一切正常
用手机访问时却在握手时中断连接,握手不成功
后来研究了一下握手协议
如下
("HTTP/1.1 101 Switching Protocols\r\n");
("Upgrade: websocket\r\n");
("Connection: Upgrade\r\n");
("Server:beetle websocket server\r\n");
("Access-Control-Allow-Credentials:true\r\n");
("Accept-Encoding: gzip, deflate, sdch\r\n");
("Accept-Language: zh-CN,zh;q=0.8\r\n");
("Access-Control-Allow-Headers:content-type\r\n");
("Sec-WebSocket-Accept:" + key + "\r\n");
在这里也没有发现问题...
为了实现一个猜测,在最后一条加了一个\r
最后变成
("Sec-WebSocket-Accept:" + key + "\r\n\r");
然后就握手成功,通信OK
问题到这里就解决了。。。。 个人猜测可能是手机端兼容上的问题。 既然要求在最后一定要加\r\n,那也许是手机端还需要有一个结束标识?
相关文章推荐
- iOS项目异常捕捉提示及处理方案。
- swift - 各种手势用法大全
- Cocos2dx C++与Lua合并开发的VS配置环境搭建
- Android样式的开发:shape篇
- 高手速成android开源项目【View篇】
- WKWebView加载Html文件,如何自适应网页内容呢?就是不要让它左右滑动
- Android 设置应用程序的主题颜色
- react native改变app的图标和名称
- iOS 出现蓝色块
- Android源码编译详解【四】:Android 6.0_源码的下载与编译
- FFmpeg编译
- cocos2dx AssetsManager的一个BUG
- RelativeLayout常用属性介绍
- Android : 破解apk
- 新手Android学习笔记 06——自定义控件的单击事件
- 新手Android学习笔记 06——自定义控件的单击事件
- Android View中通过getViewTreeObserver().addOnGlobalLayoutListener()获取控件高、宽
- 03-swift微博搭建框架
- iOS tableView 设置分割线
- 微信网页授权