2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
我在這里看到的最大問(wèn)題是對(duì) socket.io 的誤解。javascript 的 Socket.io 與 java 中的 Socket 庫(kù)不兼容。命名約定肯定會(huì)令人困惑。
socket.io 是一個(gè)與 Web 套接字 (ws://) 相關(guān)的庫(kù)。它實(shí)現(xiàn)了所有基本的 websocket 功能以及一些額外功能。
您的 Java 代碼擁有的是 TCP 套接字服務(wù)器。雖然 websockets 和 socket.io 是基于 TCP 套接字構(gòu)建的,但您無(wú)法將 socket.io 客戶端連接到“裸”套接字服務(wù)器。
解決方案:如果您從網(wǎng)絡(luò)瀏覽器運(yùn)行 javascript,那么您僅限于 websocket,這意味著您要將 java 代碼更改為 websocket 服務(wù)器。您可以在網(wǎng)上找到該庫(kù)。

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用ws://...
而不是http://...
.
詳細(xì)信息: https
用于HTTP協(xié)議。在這種情況下,瀏覽器首先詢問(wèn)服務(wù)器是否允許 CORS 是正確的。您尚未啟用 CORS。這就是為什么瀏覽器拒絕發(fā)送CORS請(qǐng)求是正常的。
但你說(shuō)你想使用 Web Sockets。那么你應(yīng)該使用ws://
,而不是http://
。對(duì)于 Web 套接字,沒(méi)有 CORS 策略,瀏覽器將在沒(méi)有 CORS 限制的情況下發(fā)送您的請(qǐng)求。
添加回答
舉報(bào)