【发布时间】:2016-08-15 12:08:39
【问题描述】:
我的目标是什么:
我想使用来自 Android 的一个连接参数连接到命名空间上使用 socket.io 配置的套接字。例如,我想使用参数“token”和值“1234567890abc”连接到https://www.socket.com/messages/。
到目前为止我所知道的:
套接字完全可以在 Web 客户端和 IOS 客户端上运行。 IOS客户端使用如下代码:
self.socketClient = SocketIOClient(socketURL: NSURL(string: APIManager.sharedManager.baseURL)!, options: [.Log(true), .Path(chat), .ConnectParams(["token":token])])
self.turnOnAllInitialListeners()
self.socket.connect()
如您所见,没有什么花哨的。这是价值观:
[0] : log
- Log : false
▿ [1] : path
- Path : "/server-x/"
▿ [2] : secure
- Secure : true
▿ [3] : connectParams
▿ ConnectParams : 1 elements
▿ [0] : 2 elements
- .0 : "token"
- .1 : bXByAFX7vYMERLyOBIgbP50ufPMOPKv
这个连接是成功的,我一直在尝试用这种方法在 Android 中实现同样的效果:
String url = "https://demo.test.test.nl";
IO.Options opts = new IO.Options();
opts.query = "token=bXByAFX7vYMERLyOBIgbP50ufPMOPKv";
// Tried on and off
// opts.path = "/server-x";
try {
opts.sslContext = SSLContext.getDefault();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
Manager manager = new Manager(new URI(url), opts);
// Tried on and off
mSocket = manager.socket("/server-x");
} catch (URISyntaxException e) {
Log.e(TAG, "Could not connect to socket server");
}
setConnectionListeners();
setChatListeners();
// Connected always returns into false.
mSocket.connect();
命名空间、路径或令牌没有任何问题。还尝试了不使用 SSL 部分以及使用和不使用单独的管理器。此外,代码不会出现在其中一个问题中。会出什么问题?感谢所有帮助。感谢阅读。
【问题讨论】:
标签: android sockets socket.io connection parameter-passing