spring websocket在集群下怎么实现

 我来答
千锋教育
2017-01-03 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
通过上面的原理分析可以知道,需要发送到后台的数据很简单,就是用户信息,聊天信息,和所在的空间信息,因为是一个简单的例子,所以bean就设计的比较简单了:
[java] view plain copy
public class UserChatCommand {
private String name;
private String chatContent;
private String coordinationId;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getChatContent() {
return chatContent;
}

public void setChatContent(String chatContent) {
this.chatContent = chatContent;
}

public String getCoordinationId() {
return coordinationId;
}

public void setCoordinationId(String coordinationId) {
this.coordinationId = coordinationId;
}

@Override
public String toString() {
return "UserChatCommand{" +
"name='" + name + '\'' +
", chatContent='" + chatContent + '\'' +
", coordinationId='" + coordinationId + '\'' +
'}';
}
}
通过这个bean来接收到web端发送的消息,然后在服务端转发,接下来就是转发的逻辑了,不过首先需要介绍一下Spring WebSocket的一个annotation。
spring mvc的controller层的annotation是RequestMapping大家都知道,同样的,WebSocket也有同样功能的annotation,就是MessageMapping,其值就是访问地址。现在就来看看controller层是怎么实现的吧:
[java] view plain copy
/**
* WebSocket聊天的相应接收方法和转发方法
*
* @param userChat 关于用户聊天的各个信息
*/
@MessageMapping("/userChat")
public void userChat(UserChatCommand userChat) {
//找到需要发送的地址
String dest = "/userChat/chat" + userChat.getCoordinationId();
//发送用户的聊天记录
this.template.convertAndSend(dest, userChat);
}
怎么这么简单?呵呵,能够这么简单的实现后台代码,全是Spring的功劳。首先,我们约定好发送地址的规则,就是chat后面跟上之前发送过来的id,然后通过这个“template”来进行转发,这个“template”是Spring实现的一个发送模板类:SimpMessagingTemplate,在我们定义controller的时候,可以在构造方法中进行注入:
[java] view plain copy
@Controller
public class CoordinationController {

......

//用于转发数据(sendTo)
private SimpMessagingTemplate template;
<pre name="code" class="java"> @Autowired
public CoordinationController(SimpMessagingTemplate t) {
template = t;
}
.....
}
育知同创教育
2017-01-03 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
var mycars = new Array()
Composite comp2 = new Composite("Composite XY");
comp2.Add(new Leaf("Leaf XYA"));
comp2.Add(new Leaf("Leaf XYB"));
root.Add(comp2);
root.Add(new Leaf("Leaf C"));
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式