2017-09-20 26 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)。 –