最近有网友 基于宝贝鱼(CshBBrain)开发聊天类应用 遇到群发、广播消息的问题,现已处理,将处理过程贴出来 供开发这方面应用的朋友参考,少走弯路。(宝贝鱼(CshBBrain) 的使用问题本想开一个群组讨论的,在iteye上我无法再创建群组了,只有贴到专栏来了)
请教一个在使用Websocket服务端时关于消息广播的问题 |
|
|
|
你好,想跟你请教个问题:
在运行股票的那个示例程序时,配置文件中broadSwitch=1。
但运行两个客户端页面时,只会有一个页面可以成功接收到消息,而另一个页面会进入onerror方法,请问这是为什么?我如何能查看onerror(event)的详细错误信息?event.data和event.text两个属性不行。
谢谢!
|
Re: 请教一个在使用Websocket服务端时关于消息广播的问题 |
|
|
|
下载新版本的程序,这是一个bug,老版本的程序有,已经解决这个缺陷。 http://cshbbrain.iteye.com/blog/1724397
|
请教一个在使用Websocket服务端时关于消息广播的问题
请问我如何才能在WebSocketProcesser或Service中接收客户端请求中的数据再把它广播出去?MasterServer.addBroadMessage(rs);调用这个方法会报错。
|
谢谢!
请教一个在使用Websocket服务端时关于消息广播的问题
我想模仿Tomcat7的那几个WebSocket示例基于您的服务端实现一下,但对广播的使用目前还搞不清楚,做chat.html和snake.html两个实例时有困难,麻烦您能给简要说一说实现的思路吗?谢谢。
请教一个消息广播的问题 |
|
|
|
public Response service(Client sockector, HashMap<String, String> requestData){
if(requestData == null){
return null;
}
log.info(requestData.get(Constants.FILED_MSG));
Response responseMessage = null;
try{
if(!MyStringUtil.isBlank(requestData.get(Constants.HANDSHAKE))){
responseMessage = Response.msgOnlyBody(requestData.get(Constants.FILED_MSG));
}else{
responseMessage = Response.msgOnlyBody("Hello," + requestData.get(Constants.FILED_MSG));
}
}catch(Exception e){
e.printStackTrace();
responseMessage = Response.msgOnlyBody("500处理失败了");
}
return responseMessage;
}
请问,在Service中我如何广播消息。我尝试过这样
Response responseMessage = null;
if(!MyStringUtil.isBlank(requestData.get(Constants.HANDSHAKE))){
responseMessage = Response.msgOnlyBody(requestData.get(Constants.FILED_MSG));
}else{
responseMessage = Response.msgOnlyBody("Hello," + requestData.get(Constants.FILED_MSG));
}
MasterServer.addBroadMessage(responseMessage);
但是会报如下错误信息
java.lang.NullPointerException
at com.jason.server.Response.msgRespose(Response.java:120)
麻烦您时间方便请指点一下该怎样实现。
|
|
|
|
|
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
|
由于新版本的功能尚未开发完毕,这个问题将在下次更新版本时一并提交。
分享到:
相关推荐
本项目通过Netty实现了一个简单的聊天消息群发功能,使得多个客户端可以向服务端发送消息,服务端接收到消息后,再广播给所有连接的客户端。这对于构建分布式聊天系统或者实时通知系统非常有用。 首先,我们要理解...
微信公众号零基础开发视频--群发消息和模版消息,零基础视频开发介绍 对应视频请下载对应连接,微信公众号开发视频(全)
微信三方代开发公众号消息管理-群发(文本、图片、图文、语音/音频、视频)消息的方法和规则进行详细的说明
C#是微软公司推出的面向对象的编程语言,常用于构建Windows平台上的应用程序,尤其在企业级应用开发中广泛应用。邮件群发系统则是为了高效地向多个收件人同时发送电子邮件而设计的工具,常见于营销、通知等场景。 ...
描述中提到的“linq聊天群发工具”,意味着这个源代码实现了一个功能,能够利用LINQ对基于jabber协议的聊天系统进行消息群发。这可能是为了实现大规模的通知、广播消息或者营销目的,通过自动化的方式一次性向多个...
在Web应用中,WebSocket为实时通信提供了强大的支持,如在线聊天、游戏、股票行情更新等场景。 在"使用WebSocket简单实现群发消息和指定用户发送消息"的实践中,我们通常会有一个WebSocket服务端(WebSocketSev)...
在此项目中,我们利用Java作为后端开发语言,配合WebSocket协议,实现了一个功能完善的在线聊天程序,包括群发消息和选择特定用户发送私聊的能力。 1. **Java WebSocket API** Java WebSocket API是Java标准版...
2. **事件驱动编程**:酷Q的插件开发通常基于事件驱动,即当特定事件发生时,执行相应的代码。例如,当接收到新消息时,可以触发群发消息的逻辑。 3. **易语言模块化编程**:为了保持代码的清晰和可维护性,可以将...
2. **获取会话**:获取与目标用户的聊天会话ID,这对于正确发送消息至关重要。 3. **构建消息**:根据WebQQ协议格式构建消息,包括消息内容、发送者、接收者等信息。 4. **发送消息**:使用精易模块中的网络通信功能...
Godot引擎社交游戏开发:好友系统与消息传递_(10).实现私聊消息功能.docx Godot引擎社交游戏开发:好友系统与消息传递_(11).实现群发消息功能.docx Godot引擎社交游戏开发:好友系统与消息传递_(12).好友请求...
SpringBoot中使用Netty开发WebSocket服务改造多线程群发消息示例代码: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131681393
在现代Web开发中,实时通信成为了不可或缺的一部分,特别是在构建社交应用、在线游戏或协作工具时。本项目通过结合Node.js和Socket.IO,利用HTML5技术,实现了一个功能丰富的实时在线聊天室,支持文字、表情和图片...
1. C#语言:这是微软开发的一种面向对象的编程语言,广泛应用于Windows桌面应用开发、Web应用以及游戏开发。C#具有类型安全、垃圾回收、内存管理等特性,适合构建复杂的软件系统。 2. .NET框架:C#源码是基于.NET...
用 JavaSocket 编程开发聊天室 用 Java 图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号。 可以实现群聊(聊天记录显示在所有客户端界面)。 完成好友列表在...
当需要向多个联系人同时发送消息时,QQ的群发消息和讨论组群发消息这两种方式能有效提升沟通效率,尤其适用于各种通知类信息的发布。 首先,让我们详细了解群发消息的第一种方式——通过群进行群发。QQ群是一种围绕...
C#实现微信公众号群发消息(解决一天只能发一次的限制) C#实现微信公众号群发消息(解决一天只能发一次的限制) C#实现微信公众号群发消息(解决一天只能发一次的限制)
标题中的“VB.zip_VB 聊天室 群发_site:www.pudn.com_vb6 聊天_vb6.0 聊天”表明这是一个使用Visual Basic 6.0(VB6.0)开发的聊天室应用程序,可能具有群发消息的功能,并且可以在www.pudn.com这个网站上找到相关的...
本项目名为“基于TCP的聊天软件”,它运用了MFC(Microsoft Foundation Classes)库来构建客户端和服务器端应用,实现了基本的聊天功能,包括在线成员检测和掉线处理。 TCP是一种面向连接的、可靠的传输协议,它在...
【简单聊天程序】是一个基于socket和线程技术构建的客户端应用程序,主要目的是提供一个基本的交互平台,使得用户可以通过网络进行实时的文本通信。在这个项目中,我们将深入探讨socket编程和多线程在实现聊天应用中...
本教程将专注于使用C++和Qt框架来实现一个基于UDP(User Datagram Protocol)的广播消息系统。UDP是一种无连接的传输层协议,常用于需要快速传输但不保证数据完整性的场景,如流媒体、在线游戏等。而广播则是网络...