求解:websocket+jsp+Tomcat 8如何实现服务器端向特定的客户端发送消息? 20

因为是学生,所以希望大神帮忙解答的时候稍微详细一点,谢谢... 因为是学生,所以希望大神帮忙解答的时候稍微详细一点,谢谢 展开
 我来答
诸葛不要太亮55
2016-10-23 · TA获得超过152个赞
知道答主
回答量:180
采纳率:0%
帮助的人:130万
展开全部
基于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){

}
}
追问
我想问的是如何发送给特定的客户端,不是广播,这个我会的
追答
这个不是广播呀, socket 就是可以给指定的客户端发消息
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式