- socket = IO.socket("http://localhost"); // 创建Socket.IO长连接对象
- 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) {}
- }); // 注册事件监听对象 各种Event
- socket.connect(); // 连接socket
这个库使用 org.json 来解析和组成 JSON 字符串。
- // 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];
- }
- });
提供了如下的选项可以设置:
- IO.Options opts = new IO.Options();
- opts.forceNew = true;
- opts.reconnection = false;
- socket = IO.socket("http://localhost", opts);
你可以使用这些参数来配置选项。注:如果你不想重用缓存的 socket 实例来查询参数变化时,你应该使用 forceNew 选项。如果你的程序想要登出一个用户,再登录一个新用户的时候可以使用这种方式:
- IO.Options opts = new IO.Options();
- opts.forceNew = true;
- opts.query = "auth_token=" + authToken;
- Socket socket = IO.socket("http://localhost", opts);
你可以得到一个回调来确认服务器收到一个消息:
- socket.emit("foo", "woot", new Ack() {
- @Override
- public void call(Object... args) {}
- });
反过来,你也可以发送一个确认消息,告诉服务器你收到了一个消息:
- // ack from client to server
- socket.on("foo", new Emitter.Listener() {
- @Override
- public void call(Object... args) {
- Ack ack = (Ack) args[args.length - 1];
- ack.call();
- }
- });
你能够使用 SSL(HTTPS、WSS)的设置:
- // default settings for all sockets
- IO.setDefaultSSLContext(mySSLContext);
- IO.setDefaultHostnameVerifier(myHostnameVerifier);
- // set as an option
- opts = new IO.Options();
- opts.sslContext = mySSLContext;
- opts.hostnameVerifier = myHostnameVerifier;
- socket = IO.socket("https://localhost", opts);
查询更多 Java 文档可以查看:
使用 Transports 访问 Http 头:(不常用)
- // Called upon transport creation.
- socket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener() {
- @Override
- public void call(Object... args) {
- Transport transport = (Transport)args[0];
- transport.on(Transport.EVENT_REQUEST_HEADERS, new Emitter.Listener() {
- @Override
- public void call(Object... args) {
- @SuppressWarnings("unchecked")
- Map> headers = (Map>)args[0];
- // modify request headers
- headers.put("Cookie", Arrays.asList("foo=1;"));
- }
- });
- transport.on(Transport.EVENT_RESPONSE_HEADERS, new Emitter.Listener() {
- @Override
- public void call(Object... args) {
- @SuppressWarnings("unchecked")
- Map> headers = (Map>)args[0];
- // access response headers
- String cookie = headers.get("Set-Cookie").get(0);
- }
- });
- }
- });
来源: http://www.cnblogs.com/renhui/p/6544835.html