基于宝贝鱼(CshBBrain)开发聊天类应用 群发消息的问题
最近有网友 基于宝贝鱼(CshBBrain)开发聊天类应用 遇到群发、广播消息的问题,现已处理,将处理过程贴出来 供开发这方面应用的朋友参考,少走弯路。(宝贝鱼(CshBBrain) 的使用问题本想开一个群组讨论的,在iteye上我无法再创建群组了,只有贴到专栏来了)
请教一个在使用Websocket服务端时关于消息广播的问题
请问我如何才能在WebSocketProcesser或Service中接收客户端请求中的数据再把它广播出去?MasterServer.addBroadMessage(rs);调用这个方法会报错。?
谢谢!
?
请教一个在使用Websocket服务端时关于消息广播的问题
我想模仿Tomcat7的那几个WebSocket示例基于您的服务端实现一下,但对广播的使用目前还搞不清楚,做chat.html和snake.html两个实例时有困难,麻烦您能给简要说一说实现的思路吗?谢谢。
?
请教一个消息广播的问题?
?
?请问,在Service中我如何广播消息。我尝试过这样
?
?
但是会报如下错误信息
?
????Re: 请教一个消息广播的问题
?看了下你的问题,CshBBrain最新版本有个问题修改下就可以了。我直接贴代码:
MyStringUtil.java
添加属性:
public static final String CSHBBRAIN_CONTENT = "CSHBBRAIN_CONTENT";
修改方法:
public static HashMap<String,String> parseKeyValue(String msg){????
??? if(isBlank(msg)){
??????????? return null;
??????? }
????
??? String values = null;
??????? try{
??????? values = URLDecoder.decode(msg, CoderUtils.UTF8);
??????? }catch(UnsupportedEncodingException e){
??????????? throw new UnsupportedCharsetException(CoderUtils.UTF8);
??????? }
????????
??????? HashMap<String,String> requestData = new HashMap<String,String>();
????????
??????? requestData.put(CSHBBRAIN_CONTENT, values);// 所有信息
????
??????? Matcher m = PARAM_PATTERN.matcher(values);
??????? int pos = 0;
??????? while (m.find(pos)) {
??????????? pos = m.end();????????????
??????????? requestData.put(m.group(1), m.group(2));?
??????? }
????????
??????? return requestData;
??? }
Service.java
public Response service(Client sockector, HashMap<String, String> requestData){
if(requestData == null){
return null;
}
Response responseMessage = null;
try{
if(!MyStringUtil.isBlank(requestData.get(Constants.HANDSHAKE))){
responseMessage = Response.msgOnlyBody(requestData.get(Constants.FILED_MSG));
}else{
MasterServer.addBroadMessage(Response.msgOnlyBody("hello " + requestData.get(MyStringUtil.CSHBBRAIN_CONTENT)));
responseMessage = Response.msgOnlyBody("hello " + requestData.get(MyStringUtil.CSHBBRAIN_CONTENT));
//responseMessage = Response.msgOnlyBody("var taskKey= " + requestData.get("taskKey")? + "; var resultData= '<-" + requestData.get("taskKey") +"->'");
}
}catch(Exception e){
e.printStackTrace();
responseMessage = Response.msgOnlyBody("500处理失败了");
}
return responseMessage;
}?
????Re: 请教一个消息广播的问题
?以上代码务必请下载最新版本?
http://code.google.com/p/cshbbrain/downloads/list由于新版本的功能尚未开发完毕,这个问题将在下次更新版本时一并提交。
?
?
1 楼 CshBBrain 2013-01-12 这段时间遇到请教此类问题的情况较多,所有整理下放出来 供有需要的参考