WebSocket握手服务端响应算法『java』
来源:互联网 发布:厦门理工软件学院 编辑:程序博客网 时间:2024/06/03 22:39
/ **
* GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:50000
Sec-WebSocket-Origin: http://localhost
Sec-WebSocket-Key: BYEBkScKdCuqSKY2Mf6CIg==
Sec-WebSocket-Version: 8
Cookie:
*/
public HashMap<String, String> getRequestHeader(byte[] data){
String requestHeader=new String(data);
requestHeader=requestHeader.substring(0,requestHeader.indexOf("\r\n\r\n"));
String[] reqarr=requestHeader.split("\r\n");
reqHeader=new HashMap<String, String>();
for (int i = 0; i < reqarr.length; i++) {
String requestHeaderLine=reqarr[i];
if(requestHeaderLine.toUpperCase().startsWith("GET")||requestHeaderLine.toUpperCase().startsWith("POST")){
String[] first=requestHeaderLine.split(" ");
if(first.length==3){
String method=first[0];
String location=first[1].replaceAll("\\s","");
String protocol=first[2].split("/")[0];
String protocolVersion=first[2].split("/")[1];
reqHeader.put("Method", method);
reqHeader.put("Location", location);
reqHeader.put("Protocol", protocol);
reqHeader.put("ProtocolVersion", protocolVersion);
}
}else{
String[] reqlinearr=requestHeaderLine.split(":");
if(reqlinearr.length==2){
String key=reqlinearr[0];
String value=reqlinearr[1].replaceAll("\\s","");
reqHeader.put(key, value.replaceAll("\\s",""));
}
}
}
return reqHeader;
}
public String getResponseHeader(){
String originKey=reqHeader.get("Sec-WebSocket-Key")+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
java.security.MessageDigest alga = null;
byte[] digesta = null;
try {
alga = java.security.MessageDigest.getInstance("SHA-1");
alga.update(originKey.getBytes());
digesta=alga.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] respKey=org.apache.commons.codec.binary.Base64.encodeBase64(digesta);
String header="HTTP/1.1 101 Switching Protocols\r\n" +
"Upgrade: Websocket\r\n" +
"Connection: Upgrade\r\n" +
"Sec-WebSocket-Accept: "+new String(respKey)+"\r\n\r\n";
return header;
}
* GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:50000
Sec-WebSocket-Origin: http://localhost
Sec-WebSocket-Key: BYEBkScKdCuqSKY2Mf6CIg==
Sec-WebSocket-Version: 8
Cookie:
*/
public HashMap<String, String> getRequestHeader(byte[] data){
String requestHeader=new String(data);
requestHeader=requestHeader.substring(0,requestHeader.indexOf("\r\n\r\n"));
String[] reqarr=requestHeader.split("\r\n");
reqHeader=new HashMap<String, String>();
for (int i = 0; i < reqarr.length; i++) {
String requestHeaderLine=reqarr[i];
if(requestHeaderLine.toUpperCase().startsWith("GET")||requestHeaderLine.toUpperCase().startsWith("POST")){
String[] first=requestHeaderLine.split(" ");
if(first.length==3){
String method=first[0];
String location=first[1].replaceAll("\\s","");
String protocol=first[2].split("/")[0];
String protocolVersion=first[2].split("/")[1];
reqHeader.put("Method", method);
reqHeader.put("Location", location);
reqHeader.put("Protocol", protocol);
reqHeader.put("ProtocolVersion", protocolVersion);
}
}else{
String[] reqlinearr=requestHeaderLine.split(":");
if(reqlinearr.length==2){
String key=reqlinearr[0];
String value=reqlinearr[1].replaceAll("\\s","");
reqHeader.put(key, value.replaceAll("\\s",""));
}
}
}
return reqHeader;
}
public String getResponseHeader(){
String originKey=reqHeader.get("Sec-WebSocket-Key")+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
java.security.MessageDigest alga = null;
byte[] digesta = null;
try {
alga = java.security.MessageDigest.getInstance("SHA-1");
alga.update(originKey.getBytes());
digesta=alga.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] respKey=org.apache.commons.codec.binary.Base64.encodeBase64(digesta);
String header="HTTP/1.1 101 Switching Protocols\r\n" +
"Upgrade: Websocket\r\n" +
"Connection: Upgrade\r\n" +
"Sec-WebSocket-Accept: "+new String(respKey)+"\r\n\r\n";
return header;
}
- WebSocket握手服务端响应算法『java』
- VS C++ 服务端响应WebSocket连接生成握手字符串
- java编写WebSocket服务端
- Java WebSocket服务端实现
- java编写的Websocket服务端
- websocket 版本13的 握手算法
- JAVA Sokcet(服务端)连接WebSocket个人总结
- Java WebSocket连接302错误 或者 握手失败错误
- WebSocket握手协议
- WebSocket握手协议
- WebSocket(壹) 握手连接
- WebSocket握手总结
- websocket(一)--握手
- WebSocket握手协议
- WebSocket(壹) 握手连接
- WebSocket握手协议
- 2、Java WebSocket实现服务端主动发消息给客户端
- Java Websocket实例【服务端与客户端实现全双工通讯】
- Struts2文件的上传和下载
- winform中datagridview新增combobox列绑定数据源
- 男人城府的修炼
- 百度李彦宏:想真正做事就别受外界太多干扰
- hadoop安装测试
- WebSocket握手服务端响应算法『java』
- Java中对HashMap的深度分析与比较(转载初学者笔记)
- 自动根据数据库表,生成相应的带注解有POJO/EO对象
- 使ALV控件中的内容可编辑
- 深度完美 Ghost XP SP3 纯净优化版V2011.11
- mysql cmd命令
- awakeFromNib小总结
- 资源系统怎么进不去了去
- 认识HTML5的WebSocket