4a1610c670dbf2959e85abf42076e560b8d3e56a.svn-base 2.0 KB
package com.espeed.socket;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.websocket.MessageInbound;
import org.apache.catalina.websocket.StreamInbound;
import org.apache.catalina.websocket.WebSocketServlet;
import org.apache.catalina.websocket.WsOutbound;

import com.espeed.centre.pojo.YxyUserInfo;

public class EchoServlet extends WebSocketServlet{

	private static final long serialVersionUID = -2581942001009336822L;
	public String getUser(HttpServletRequest request){ 
		YxyUserInfo user = (YxyUserInfo)request.getSession().getAttribute("yxyuser");
		if(user==null){
			//return "";
			return "";
		}else{
			//return user.getUser_id()+"";
			return user.getLogin_id()+"@"+user.getDomain();
		}
	}
	
	@Override
	protected StreamInbound createWebSocketInbound(String subProtocol,HttpServletRequest request) {
		WebSocketMessageInbound websocket=new WebSocketMessageInbound(getUser(request));
		return websocket;
	}

	public class WebSocketMessageInbound extends MessageInbound implements Runnable{

		//当前连接的用户名称  
	    private final String userid;
	    public WebSocketMessageInbound(String userid) {  
	        this.userid = userid;
	    }
		public String getUserid() {
			return userid;
		}

		protected void onClose(int status){  
			// 触发关闭事件,在连接池中移除连接  
	        WebSocketMessageInboundPool.removeMessageInbound(this);     
        }  
        protected void onOpen(WsOutbound outbound){ 
        	// 触发连接事件,在连接池中添加连接  
            WebSocketMessageInboundPool.addMessageInbound(this);
        }
        
		@Override
		protected void onBinaryMessage(ByteBuffer message) throws IOException {
			System.out.println("onBinarymessage");		
		}

		@Override
		protected void onTextMessage(CharBuffer message) throws IOException {
			//向特定的用户发送数据
	        WebSocketMessageInboundPool.sendMessageToUser(userid,message.toString());
		}
		public void run() {
			
		}
	}
}