一、简介
netty-socketio中的namespace可以用于区别在相同连接地址下的不同用户,当两个不同的用户打开同一个页面的时候,可以使用namespace用来标记不同用户。例如我们可以在用户中心页面动态的获取用户的消息数目。这里就可以使用到namespace。因为每个用户的id都是不一样的,我们可以使用id来标识每个用户的namespace。
二、示例
服务器端代码:
package com.test.socket; import com.corundumstudio.socketio.Configuration; import com.corundumstudio.socketio.SocketIONamespace; import com.corundumstudio.socketio.SocketIOServer; public class SocketServer2 { public static void main(String[] args) throws InterruptedException { Configuration config = new Configuration(); config.setHostname("localhost"); config.setPort(9092); final SocketIOServer server = new SocketIOServer(config); server.start(); String uid = "1111"; String namespace = String.format("/%s_%s", "msg", uid);//构建命名空间 SocketIONamespace chat1namespace = server.addNamespace(namespace); //设置命名空间 for (int i = 0; i < 50; i++) { Thread.sleep(2000); chat1namespace.getBroadcastOperations().sendEvent("message", 1); //每次发送数字一 } Thread.sleep(Integer.MAX_VALUE); server.stop(); } }
客户端message.html代码:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>Insert title here</title> 6 <script src="./jquery-1.9.1.js" type="text/javascript"></script> 7 <script type="text/javascript" src="./socket.io/socket.io.js"></script> 8 9 <style> 10 body { 11 padding:20px; 12 } 13 #console { 14 overflow: auto; 15 } 16 .username-msg {color:orange;} 17 .connect-msg {color:green;} 18 .disconnect-msg {color:red;} 19 .send-msg {color:#888} 20 </style> 21 22 </head> 23 24 <body> 25 26 <h1>Netty-socketio Demo Chat</h1> 27 28 <br/> 29 30 <div id="console" class="well"> 31 </div> 32 消息总数:<div id="msgnum">0</di> 33 </body> 34 35 36 37 <script type="text/javascript"> 38 var socket = io.connect('http://localhost:9092/msg_1111'); 39 40 socket.on('connect', function() { 41 output('<span class="connect-msg">Client has connected to the server!</span>'); 42 }); 43 44 socket.on('message', function(data) {//收到消息后,将消息总数加一 45 var num = $("#msgnum").html(); 46 num = parseInt(num) + data; 47 $("#msgnum").html(num); 48 }); 49 50 socket.on('disconnect', function() { 51 output('<span class="disconnect-msg">The client has disconnected!</span>'); 52 }); 53 function sendDisconnect() { 54 socket.disconnect(); 55 } 56 57 function output(message) { 58 var currentTime = "<span class='time'>" + new Date() + "</span>"; 59 var element = $("<div>" + currentTime + " " + message + "</div>"); 60 $('#console').prepend(element); 61 } 62 63 </script> 64 </html>
启动服务器,访问该网页,消息总数会每次加1。