1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var socket = new io.Socket(document.domain, { resource: 'chat' }); socket.on('connect', function() { // Socket.IO is connected }); socket.on('disconnect', function(disconnectReason, errorMessage) { // Socket.IO disconnected }); socket.on('message', function(mtype, data, error) { // The server sent an event }); // Now that the handlers are defined, establish the connection: socket.connect(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public final class ChatServlet extends SocketIOServlet { private final BlockingQueue<Endpoint> endpoints = new LinkedBlockingQueue<Endpoint>(); @Override protected SocketIOInbound doSocketIOConnect (HttpServletRequest request) { String user = (String) request.getSession().getAttribute("user"); return user == null ? null : new Endpoint(this, user, request); } void broadcast(String data) { for (Endpoint endpoint : endpoints) { endpoint.send(data); } } void add(Endpoint endpoint) { endpoints.offer(endpoint); } void remove(Endpoint endpoint) { endpoints.remove(endpoint); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | class Endpoint implements SocketIOInbound { [...] private SocketIOOutbound outbound; [...] @Override public void onConnect(SocketIOOutbound outbound) { this.outbound = outbound; servlet.add(this); servlet.broadcast(user + " connected"); } @Override public void onDisconnect(DisconnectReason reason, String errorMessage) { outbound = null; request.getSession().removeAttribute("user"); servlet.remove(this); servlet.broadcast(user + " disconnected"); } @Override public void onMessage(int messageType, String message) { if ("/disconnect".equals(message)) { outbound.close(); } else { servlet.broadcast("[" + user + "] " + message); } } void send(String data) { try { if (outbound != null && outbound.getConnectionState() == ConnectionState.CONNECTED) { outbound.sendMessage(data); } } catch (IOException e) { outbound.close(); } } } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |