`
CshBBrain
  • 浏览: 650076 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
B7d9bf34-126e-301f-819e-81f2615b5a2a
开源WebSocket服务...
浏览量:144901
Group-logo
HTML5移动开发
浏览量:137846
社区版块
存档分类
最新评论

基于宝贝鱼(CshBBrain)开发聊天类应用 群发消息的问题

阅读更多

最近有网友 基于宝贝鱼(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

由于新版本的功能尚未开发完毕,这个问题将在下次更新版本时一并提交。

 

 

1
1
分享到:
评论
1 楼 CshBBrain 2013-01-12  
这段时间遇到请教此类问题的情况较多,所有整理下放出来 供有需要的参考

相关推荐

    Netty实现简单的聊天消息群发功能

    本项目通过Netty实现了一个简单的聊天消息群发功能,使得多个客户端可以向服务端发送消息,服务端接收到消息后,再广播给所有连接的客户端。这对于构建分布式聊天系统或者实时通知系统非常有用。 首先,我们要理解...

    微信公众号零基础开发视频--群发消息和模版消息

    微信公众号零基础开发视频--群发消息和模版消息,零基础视频开发介绍 对应视频请下载对应连接,微信公众号开发视频(全)

    三方代开发公众号消息管理-群发消息

    微信三方代开发公众号消息管理-群发(文本、图片、图文、语音/音频、视频)消息的方法和规则进行详细的说明

    基于c#开发的邮件群发系统源码

    C#是微软公司推出的面向对象的编程语言,常用于构建Windows平台上的应用程序,尤其在企业级应用开发中广泛应用。邮件群发系统则是为了高效地向多个收件人同时发送电子邮件而设计的工具,常见于营销、通知等场景。 ...

    基于jabber协议的linq聊天群发工具源代码

    描述中提到的“linq聊天群发工具”,意味着这个源代码实现了一个功能,能够利用LINQ对基于jabber协议的聊天系统进行消息群发。这可能是为了实现大规模的通知、广播消息或者营销目的,通过自动化的方式一次性向多个...

    使用webSocket简单实现群发消息和指定用户发送消息

    在Web应用中,WebSocket为实时通信提供了强大的支持,如在线聊天、游戏、股票行情更新等场景。 在"使用WebSocket简单实现群发消息和指定用户发送消息"的实践中,我们通常会有一个WebSocket服务端(WebSocketSev)...

    基于Java和websocket的在线聊天程序(可群发和选择用户)

    在此项目中,我们利用Java作为后端开发语言,配合WebSocket协议,实现了一个功能完善的在线聊天程序,包括群发消息和选择特定用户发送私聊的能力。 1. **Java WebSocket API** Java WebSocket API是Java标准版...

    易语言基于酷Q开发的QQ群发插件源码

    2. **事件驱动编程**:酷Q的插件开发通常基于事件驱动,即当特定事件发生时,执行相应的代码。例如,当接收到新消息时,可以触发群发消息的逻辑。 3. **易语言模块化编程**:为了保持代码的清晰和可维护性,可以将...

    webqq协议QQ消息群发

    2. **获取会话**:获取与目标用户的聊天会话ID,这对于正确发送消息至关重要。 3. **构建消息**:根据WebQQ协议格式构建消息,包括消息内容、发送者、接收者等信息。 4. **发送消息**:使用精易模块中的网络通信功能...

    SpringBoot中使用Netty开发WebSocket服务改造多线程群发消息示例代码

    SpringBoot中使用Netty开发WebSocket服务改造多线程群发消息示例代码: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131681393

    使用Node.js + socket.io搭建基于HTML5的实时在线聊天室,支持文字、表情、图片消息群发.zip

    在现代Web开发中,实时通信成为了不可或缺的一部分,特别是在构建社交应用、在线游戏或协作工具时。本项目通过结合Node.js和Socket.IO,利用HTML5技术,实现了一个功能丰富的实时在线聊天室,支持文字、表情和图片...

    qq消息群发C#源码

    1. C#语言:这是微软开发的一种面向对象的编程语言,广泛应用于Windows桌面应用开发、Web应用以及游戏开发。C#具有类型安全、垃圾回收、内存管理等特性,适合构建复杂的软件系统。 2. .NET框架:C#源码是基于.NET...

    基于 JavaSocket 编程开发聊天室【100013037】

    用 JavaSocket 编程开发聊天室 用 Java 图形用户界面编写聊天室服务器端和客户端, 支持多个客户端连接到一个服务器。每个客户端能够输入账号。 可以实现群聊(聊天记录显示在所有客户端界面)。 完成好友列表在...

    C#实现微信公众号群发消息(解决一天只能发一次的限制)

    C#实现微信公众号群发消息(解决一天只能发一次的限制) C#实现微信公众号群发消息(解决一天只能发一次的限制) C#实现微信公众号群发消息(解决一天只能发一次的限制)

    VB.zip_VB 聊天室 群发_site:www.pudn.com_vb6 聊天_vb6.0 聊天

    标题中的“VB.zip_VB 聊天室 群发_site:www.pudn.com_vb6 聊天_vb6.0 聊天”表明这是一个使用Visual Basic 6.0(VB6.0)开发的聊天室应用程序,可能具有群发消息的功能,并且可以在www.pudn.com这个网站上找到相关的...

    基于tcp的聊天软件

    本项目名为“基于TCP的聊天软件”,它运用了MFC(Microsoft Foundation Classes)库来构建客户端和服务器端应用,实现了基本的聊天功能,包括在线成员检测和掉线处理。 TCP是一种面向连接的、可靠的传输协议,它在...

    简单聊天程序

    【简单聊天程序】是一个基于socket和线程技术构建的客户端应用程序,主要目的是提供一个基本的交互平台,使得用户可以通过网络进行实时的文本通信。在这个项目中,我们将深入探讨socket编程和多线程在实现聊天应用中...

    群发消息实现广播

    本教程将专注于使用C++和Qt框架来实现一个基于UDP(User Datagram Protocol)的广播消息系统。UDP是一种无连接的传输层协议,常用于需要快速传输但不保证数据完整性的场景,如流媒体、在线游戏等。而广播则是网络...

    自动给MSN 按组群发消息(with source)

    标题中的“自动给MSN 按组群发消息(with source)”指的是一个程序或工具,它能够自动化地向MSN(Microsoft Network,微软的即时通讯服务)联系人按预设的组别发送消息。这个程序可能特别适用于需要批量通知或者...

    基于Java的网络聊天室.zip

    本项目是一个基于Java编写的网络聊天室应用,支持多用户在线聊天。用户可以通过客户端连接到服务器,进行登录、注册、私聊和群聊等操作。项目使用了Redis数据库来存储用户信息,并依赖Gson和Jedis库进行JSON数据处理...

Global site tag (gtag.js) - Google Analytics