mirror of
https://gitee.com/farsunset/cim.git
synced 2025-07-24 16:51:45 +08:00
优化功能
This commit is contained in:
parent
a4278c6ead
commit
bf68ca74fd
@ -27,7 +27,8 @@ public class CIMSession implements Serializable{
|
||||
|
||||
private IoSession session;
|
||||
|
||||
private String id;//session全局ID
|
||||
private String gid;//session全局ID
|
||||
private Long nid;//session在本台服务器上的ID
|
||||
private String deviceId;//客户端设备ID
|
||||
private String host;//session绑定的服务器IP
|
||||
private String account;//session绑定的账号
|
||||
@ -40,6 +41,7 @@ public class CIMSession implements Serializable{
|
||||
|
||||
public CIMSession(IoSession session) {
|
||||
this.session = session;
|
||||
this.nid = session.getId();
|
||||
}
|
||||
|
||||
public CIMSession()
|
||||
@ -63,11 +65,25 @@ public class CIMSession implements Serializable{
|
||||
}
|
||||
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
|
||||
|
||||
|
||||
|
||||
public String getGid() {
|
||||
return gid;
|
||||
}
|
||||
|
||||
public void setGid(String gid) {
|
||||
this.gid = gid;
|
||||
}
|
||||
|
||||
public Long getNid() {
|
||||
return nid;
|
||||
}
|
||||
|
||||
public void setNid(Long nid) {
|
||||
this.nid = nid;
|
||||
}
|
||||
|
||||
public String getDeviceId() {
|
||||
return deviceId;
|
||||
@ -95,12 +111,7 @@ public class CIMSession implements Serializable{
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
|
@ -19,12 +19,15 @@
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/antlr-2.7.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/asm.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/aspectjweaver.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/cim-core.1.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-fileupload-1.2.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-io-2.4.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-lang-2.3.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/freemarker-2.3.15.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/gson-2.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpclient-4.3.4.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpcore-4.3.2.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jstl-1.2.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/log4j.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mina-core-2.0.7.jar"/>
|
||||
@ -36,8 +39,5 @@
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/struts2-core-2.1.8.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/xstream-1.3.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/xwork-core-2.1.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/cim-core.1.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpclient-4.3.4.jar"/>
|
||||
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpcore-4.3.2.jar"/>
|
||||
<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
|
||||
</classpath>
|
||||
|
Binary file not shown.
@ -34,7 +34,7 @@ public class BindHandler implements CIMRequestHandler {
|
||||
|
||||
newSession.setAccount(account);
|
||||
newSession.setDeviceId(message.get("deviceId"));
|
||||
newSession.setId(UUID.randomUUID().toString());
|
||||
newSession.setGid(UUID.randomUUID().toString());
|
||||
newSession.setHost(InetAddress.getLocalHost().getHostAddress());
|
||||
newSession.setChannel( message.get("channel"));
|
||||
newSession.setDeviceModel(message.get("device"));
|
||||
|
@ -2,12 +2,7 @@
|
||||
package com.farsunset.ichat.cim.session;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import org.apache.mina.core.session.IoSession;
|
||||
|
||||
import com.farsunset.cim.nio.constant.CIMConstant;
|
||||
import com.farsunset.cim.nio.session.CIMSession;
|
||||
import com.farsunset.cim.nio.session.SessionManager;
|
||||
|
||||
@ -19,10 +14,9 @@ import com.farsunset.cim.nio.session.SessionManager;
|
||||
public class ClusterSessionManager implements SessionManager{
|
||||
|
||||
|
||||
private static HashMap<String,IoSession> sessions =new HashMap<String,IoSession>();
|
||||
// private static HashMap<String,IoSession> sessions =new HashMap<String,IoSession>();
|
||||
|
||||
|
||||
private static final AtomicInteger connectionsCounter = new AtomicInteger(0);
|
||||
|
||||
|
||||
|
||||
@ -30,12 +24,7 @@ public class ClusterSessionManager implements SessionManager{
|
||||
*
|
||||
*/
|
||||
public void addSession(String account,CIMSession session) {
|
||||
if(session!=null)
|
||||
{
|
||||
session.setAttribute(CIMConstant.SESSION_KEY, account);
|
||||
sessions.put(account, session.getIoSession());
|
||||
connectionsCounter.incrementAndGet();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 下面 将session 存入数据库
|
||||
@ -46,10 +35,9 @@ public class ClusterSessionManager implements SessionManager{
|
||||
|
||||
public CIMSession getSession(String account) {
|
||||
|
||||
/*//这里查询数据库
|
||||
CIMSession session = database.getSession(account);
|
||||
session.setIoSession(sessions.get(account));
|
||||
|
||||
//这里查询数据库
|
||||
/*CIMSession session = database.getSession(account);
|
||||
session.setIoSession(((NioSocketAcceptor) ContextHolder.getBean("serverAcceptor")).getManagedSessions().get(session.getNid()));
|
||||
return session;*/
|
||||
return null;
|
||||
}
|
||||
@ -65,7 +53,6 @@ public class ClusterSessionManager implements SessionManager{
|
||||
public void removeSession(CIMSession session) {
|
||||
|
||||
|
||||
sessions.remove(session.getAccount());
|
||||
//database.removeSession(session.getAttribute(CIMConstant.SESSION_KEY));*/
|
||||
}
|
||||
|
||||
@ -73,7 +60,6 @@ public class ClusterSessionManager implements SessionManager{
|
||||
public void removeSession(String account) {
|
||||
|
||||
//database.removeSession(account);*/
|
||||
sessions.remove(account);
|
||||
|
||||
}
|
||||
|
||||
@ -81,7 +67,8 @@ public class ClusterSessionManager implements SessionManager{
|
||||
public boolean containsCIMSession(CIMSession ios)
|
||||
{
|
||||
//return database.containsCIMSession(session.getAccount());
|
||||
return sessions.containsKey(ios.getAttribute(CIMConstant.SESSION_KEY)) || sessions.containsValue(ios);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user