首頁  >  文章  >  php框架  >  workerman 403錯誤原因與解決方法

workerman 403錯誤原因與解決方法

尚
原創
2019-12-05 10:52:313272瀏覽

workerman 403錯誤原因與解決方法

workerman出現錯誤如下:

400 Bad Request
Sec-WebSocket-Key not found.
This is a WebSocket service and can not be accessed via HTTP.

#錯誤原因

出現這個錯誤表示你用http協定去存取了websocket協定的服務。推薦:workerman教學

開發者要注意,客戶端使用的應用層協定要與服務端的應用層協定相同,也就是服務端是什麼協議,客戶端就使用什麼協定.

如果協定不對應就會出現類似這種拒絕通訊甚至出錯的情況。

這個道理就像在瀏覽器網址列裡存取資料庫的ip:3306連接埠一樣,你不會指望資料庫真的會傳回你什麼有用的資訊吧?

正確做法

正確的做法應該是建立一個websocket協定的鏈接,利用websocket協定與workerman的websocket協定服務通訊。如果客戶端是瀏覽器,可以利用js建立websocket鏈接,程式碼類似這樣:

// 假设服务端ip为127.0.0.1,端口为2346
ws = new WebSocket("ws://127.0.0.1:2346");
ws.onopen = function() {
    alert("连接成功");
    ws.send('tom');
    alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
};

以上是workerman 403錯誤原因與解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn