我有一个嵌入式设备,它有一个gsm模块(Quectel M95F)。我可以使用模块的AT命令集创建套接字连接并使用HTTP Rest API。现在我试图实现一个WebSocket客户端应用程序,但我找不到一个没有SSL工作的测试服务器。
WebSocket.org有一个echo服务,它可以很好地与浏览器配合使用,但如果没有SSL,它就无法连接到它。这是该示例的页面: http://www.websocket.org/echo.html
我甚至无法在我的GSM模块上使用GET方法进行握手请求。在我尝试使用这种模块时,是否需要了解任何提示?我只找到了一个Arduino库,但离我的系统太远了。我试图在我的浏览器上查看为该echo服务器发送和接收的数据包。然后我尝试使用POSTMAN发送Hand Shake数据包,但我总是收到Bad Request错误。
答案 0 :(得分:0)
ws://echo.websocket.org无SSL工作,这是我的示例页面:
<!DOCTYPE html>
<meta charset="utf-8" />
<title>WebSocket Test</title>
<script>
var wsServ = "ws://echo.websocket.org";
function initWebSockets()
{
websocket = new WebSocket(wsServ);
}
window.addEventListener("load", initWebSockets, false);
</script>
这是服务器响应:
HTTP/1.1 101 Web Socket Protocol Handshake
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type, authorization, x-websocket-extensions, x-websocket-version, x-websocket-protocol
Access-Control-Allow-Origin: null
Connection: Upgrade
Date: Tue, 18 Jul 2017 22:06:46 GMT
Sec-WebSocket-Accept: qn0lFK1Dg0wZ4esiqXliCDB2lTg=
Server: Kaazing Gateway
Upgrade: websocket
这也是我的请求标题:
GET / HTTP/1.1
Host: echo.websocket.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Sec-WebSocket-Version: 13
Origin: null
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: av25rwzrdCw9qTswx7bmTA==
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
WebSocket协议规范(RFC 6455)建议出于安全原因严格执行握手(HTTP流量)格式,如果您将流量与建议类型进行比较,则会更好。