netty 和ios通信 的问题? 400 报错
我这边是java netty服务端,需要向苹果手机推送信息,谁知道苹果手机如何通过websocket来连上netty呢?
按照网上的说法:
WebSocket不同版本的三种握手方式
我用苹果手机来测试,他们所发的请求是这样的:
GET /demo HTTP/1.1
Host: example.com
Connection: Upgrade
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
Sec-WebSocket-Protocol: sample
Upgrade: WebSocket
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5
Origin: http://example.com
^n:ds[4U
也就是带有key的请求,我响应的数据,也应该带有key,可是,我响应的总是
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://www.xx.com
WebSocket-Location: ws://www.xx.com/ls
里面没有Sec-WebSocket-Key,因此netty服务端和苹果手机建立不了连接,请求了解的人指点下哦,谢谢。
应该是这样的把 你少了一行
GET /demo HTTP/1.1 Host: example.com Connection: Upgrade Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 Sec-WebSocket-Protocol: sample Upgrade: WebSocket Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5 Origin: http://example.com ^n:ds[4U HTTP/1.1 101 WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Location: ws://example.com/demo Sec-WebSocket-Protocol: sample 8jKS'y:G*Co,Wxa-
苹果手机那边用的是draft-ietf-hybi-thewebsocketprotocol-00
最好建议他们改用rfc6455
######应该是这样的把 你少了一行
GET /demo HTTP/1.1 Host: example.com Connection: Upgrade Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 Sec-WebSocket-Protocol: sample Upgrade: WebSocket Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5 Origin: http://example.com ^n:ds[4U HTTP/1.1 101 WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Location: ws://example.com/demo Sec-WebSocket-Protocol: sample 8jKS'y:G*Co,Wxa-
我缺少少了一行
8jKS'y:G*Co,Wxa-才导致无法建立连接,我不知道怎么补上这一行呢,因为其实现代码我是直接用的netty 官方案例的(io\netty\example\http\websocketx\server),不知道为什么会这样
######你直接用netty/example/http/websocketx/client例子看能不能访问netty的server。记得在pipeline里面最前面加LoggingHandler(LogLevel.INFO)。还有把clinet 里面的WebSocketVersion换成V00试下.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。