2017-09-20 22 views
1

我有一個服務器,我可以做一個WebSocket連接。當設備進行WebSocket連接時(當應用程序啓動/啓動屏幕時),服務器在URL中尋找query parameter,該URL具有用戶的身份驗證令牌,如果令牌正確,則連接被批准,否則連接是拒絕。如何通過反應本機WebSocket連接傳遞查詢參數

這是怎樣的代碼看起來就反應本地客戶端:

const socket = new WebSocket(`ws://${website}/?token=${value}`); 
socket.onmessage = (messageEvent) => { 
    console.log('>>> socket on message:', messageEvent.data); 
}; 
socket.onopen = function() { 
    socket.send("hello world connection"); 
}; 
socket.onclose =() => { 
    console.log('Socket disconnected'); 
}; 

這工作正常,在我的iOS模擬器,以及iOS的模擬器有一個WebSocket連接到我的服務器。然而,我有一個android手機(通過局域網測試),當我打開應用程序,我得到一個錯誤說:

無法設置ws://192.xxx.xx.xx/token=aut sfiseft2sefsefs .....作爲默認原點頭

但是,如果我從URL

const socket = new WebSocket(`ws://${website}`); 

這工作得很好,但因爲我無法通過令牌的查詢參數去除查詢參數,我從服務器收到錯誤消息。

如何將查詢參數傳遞給android中的WebSocket連接?我究竟做錯了什麼?

回答

0

我有同樣的問題。在將URL傳遞給WebSocket之前,通過使用encodeURI()解決此問題。

const uri = encodeURI(`ws://${website}/?token=${value}`);  
const socket = new WebSocket(uri); 

這適用於我。

+0

這完全不是答案。請看[如何正確回答](https://stackoverflow.com/help/how-to-answer)。 –