请问除了用socket.io提供的JS连接服务端?还有其他方式连接吗?
发布于 2个月前 作者 330216851 308 次浏览 来自 问答

比如JAVA客户端连接,或者通过URL连接?

4 回复

解决了,JAVA可以连接socket.io服务端的。

@330216851 最好能把经验分享给大家,避免他人再走弯路。

嗯,楼上说的是

<dependencies> <dependency> <groupId>com.github.nkzawa</groupId> <artifactId>socket.io-client</artifactId> <version>0.3.0</version> </dependency> </dependencies> Or to install it manually, please refer dependencies to pom.xml.

Add it as a gradle dependency for Android Studio, in build.gradle:

compile ‘com.github.nkzawa:socket.io-client:0.3.0’ Usage

Socket.IO-client.java has almost the same api and features with the original JS client. You use IO#socket to initialize Socket:

socket = IO.socket(“http://localhost”); socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

@Override public void call(Object… args) { socket.emit("foo", “hi”); socket.disconnect(); }

}).on("event", new Emitter.Listener() {

@Override public void call(Object… args) {}

}).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

@Override public void call(Object… args) {}

}); socket.connect(); This Library uses org.json to parse and compose JSON strings:

// Sending an object JSONObject obj = new JSONObject(); obj.put("hello", “server”); obj.put("binary", new byte[42]); socket.emit("foo", obj);

// Receiving an object socket.on("foo", new Emitter.Listener() { @Override public void call(Object… args) { JSONObject obj = (JSONObject)args[0]; } }); Options are supplied as follows:

IO.Options opts = new IO.Options(); opts.forceNew = true; opts.reconnection = false;

socket = IO.socket("http://localhost", opts); You can get a callback with Ack when the server received a message:

socket.emit("foo", "woot", new Ack() { @Override public void call(Object… args) {} }); Use custom SSL settings:

// default SSLContext for all sockets IO.setDefaultSSLContext(mySSLContext);

// set as an option opts = new IO.Options(); opts.sslContext = mySSLContext; socket = IO.socket("https://localhost", opts);

回到顶部