HTML5 WebSocket 传输消息、图片、音频

根据Tomcat7.0.37 chat 官方例子修改,核心代码如下:

/*
 * 
 */
package com.servlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.catalina.websocket.StreamInbound;
import org.apache.catalina.websocket.WebSocketServlet;

/**
 * Example web socket servlet for chat.
 */
@SuppressWarnings("serial")
public class ChatWebSocketServlet extends WebSocketServlet 
{
	//private static final String GUEST_PREFIX="Guest";
	//private final AtomicInteger connectionIds=new AtomicInteger(0);
    //private final Set<ChatMessageInbound> connections=new CopyOnWriteArraySet<ChatMessageInbound>();
    protected StreamInbound createWebSocketInbound(String subProtocol,HttpServletRequest request) 
    {
    	System.out.println(subProtocol+"...");
    	System.out.println(request.getParameter("cs"));
    	HttpSession session=request.getSession();
    	String sessionId=session.getId();
    	ChatMessageInbound chatMessageInbound=new ChatMessageInbound();
    	chatMessageInbound.setSessionId(sessionId);
    	return chatMessageInbound;
    }
    /*
    public class ChatMessageInbound extends MessageInbound 
    {
    	private String nickname;
    	public ChatMessageInbound()
    	{
    		
    	}
    	public ChatMessageInbound(int id) 
    	{
    		this.nickname=GUEST_PREFIX+id;
        }
    	protected void onOpen(WsOutbound outbound) 
    	{
    		connections.add(this);
            String message=String.format("* %s %s",nickname,"has joined.");
            broadcast(message);
        }
    	protected void onClose(int status)
    	{
    		connections.remove(this);
            String message=String.format("* %s %s",nickname,"has disconnected.");
            broadcast(message);
        }
    	protected void onBinaryMessage(ByteBuffer message) throws IOException 
    	{
    		throw new UnsupportedOperationException("Binary message not supported.");
        }
    	protected void onTextMessage(CharBuffer message) throws IOException 
    	{
            // Never trust the client
            String filteredMessage=String.format("%s: %s",nickname,
            		HTMLFilter.filter(message.toString()));
            broadcast(filteredMessage);
        }
    	public void broadcast(String message) 
    	{
            for(ChatMessageInbound connection : connections)
            {
                try 
                {
                    CharBuffer buffer=CharBuffer.wrap(me
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值