基於websocket的jsp與java進行交互


環境:jdk.18   tomcat-7.0.70

把tomcat中的

兩個jir包復制到

注意:最后部署的時候要刪除掉這兩個jar包 tomcate中已經有了

ebSocket對象的創建和服務器連接
要連接通信端點,只需要創建一個新的WebSocket實例,並提供希望連接的對端URL。
ws://和wss://前綴分別表示WebSocket連接和安全的WebSocket連接。
url = "ws://localhost:8080/echo";
w = new WebSocket(url);
建立WebSocket連接時,可以列出Web應用能夠使用的協議

var ws;
window.onload=function(){
    ws = new WebSocket("ws://192.168.32.132:8080/CaiNiaoTV/websocket");
    ws.onopen=function(){
    };
}

document.onkeydown=function(event){
    var e = event || window.event || arguments.callee.caller.arguments[0];
    if (e && e.keyCode == 13) {
        sendMsg();
    }
}; 

function sendMsg(){
/*
 * ws.onopen = function() { };
 */
    
    var txt = "xxx";    
    
    /**
     * 發送消息
     */
    if(txt.length>0){
        ws.send(txt);
    }else{
        alert("請輸入文字");
    }
    /**
     * 接收返回的消息
     */
    ws.onmessage = function (evt)
    {
       var received_msg = evt.data;
        console.log(received_msg);
    };
    
    
    /**
     * 關閉連接
     */
     ws.onclose = function()
    {
       
    };
    
}

后台:

package com.cainiao.tv.servlet;

import java.util.Set;

import javax.websocket.Endpoint;
import javax.websocket.server.ServerApplicationConfig;
import javax.websocket.server.ServerEndpointConfig;
/**
 * websocket
 * @author Administrator
 *
 */
public class TalkSocket implements ServerApplicationConfig {
	
	/**
	 * 注解的方式啟動
	 * 自動掃描本地的websocket
	 * @return scan是websocket
	 */
	@Override
	public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scan) {
		// TODO Auto-generated method stub
		return scan;
	}
	/**
	 * 接口方式啟動
	 */
	@Override
	public Set<ServerEndpointConfig> getEndpointConfigs(
			Set<Class<? extends Endpoint>> arg0) {
		// TODO Auto-generated method stub
		return null;
	}

}

  

import java.io.IOException;
import java.util.List;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import com.cainiao.tv.entity.Talk;
import com.cainiao.tv.entity.User_Tv;


@ServerEndpoint("/websocket")
public class TalkWebSocketServer {
    private static List<Session> sessions = new 
    @OnOpen
    public void open(Session session){
        sessions.add(session);
    }
    
    
    public void broadcast(List<Session> sessions,String msg){
        for(Iterator iter = sessions.iterator();iter.hasNext();){
            Session session = (Session) iter.next();
            try {
                session.getBasicRemote().sendText(msg);
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    }    

    
    
    
    
    
    
    @OnMessage
    public void messgae(Session session,String msg){
        System.out.println("消息內容:"+msg);
                broadcast(this.sessions,msg)//廣播
    
    }
    
    @OnClose
    public void close(Session session){
        
    }
}
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM