netty 和ios通信 的问题

天王盖地虎626 发布于 2014/07/23 15:39
阅读 4K+
收藏 0

【华为云1024程序员节·向云而生】预约直播 抽14件华为电子产品礼包!>>>

我这边是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服务端和苹果手机建立不了连接,请求了解的人指点下哦,谢谢。

 

 

加载中
0
char1st
char1st

应该是这样的把 你少了一行

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-



0
char1st
char1st

苹果手机那边用的是draft-ietf-hybi-thewebsocketprotocol-00

最好建议他们改用rfc6455

0
天王盖地虎626
天王盖地虎626

引用来自“char1st”的评论

应该是这样的把 你少了一行

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),不知道为什么会这样

0
char1st
char1st

你直接用netty/example/http/websocketx/client例子看能不能访问netty的server。记得在pipeline里面最前面加LoggingHandler(LogLevel.INFO)。还有把clinet 里面的WebSocketVersion换成V00试下.


返回顶部
顶部