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中文網其他相關文章!