atmosphere框架求助

问题描述

项目用到了atmosphere框架,采用的是springMVC+atmosphere+c3p0,应用是一个在线聊天系统,可以运行,也做了线上测试,但是有一个bug不知道如何解决,并且现在想着要去做集群,想要了解和交流的欢迎发送邮件给我:75277381@qq.com。如果项目能完善运行,我将会写一遍博客,补充国内在atmosphere文档的空白,谢谢!

解决方案

解决方案二:
什么bug,你不说大家咋知道呢
解决方案三:
没有用过,支持分享
解决方案四:
补充:bug描述,当程序运行一段时间之后,新的请求不会再被激活,一直是一个被压住的状态(suspend)-->对于一个存在的broadcaster(房间),当新建一个broadcaster(新的房间),运行正常。且后台不会报错。
解决方案五:
@RequestMapping(value="/comet",method=RequestMethod.GET)publicModelAndViewsubscribe(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{AtmosphereResourceresource=(AtmosphereResource)request.getAttribute(FrameworkConfig.ATMOSPHERE_RESOURCE);this.doGet(resource,request,resource.getResponse());ModelAndViewmv=newModelAndView(newNoOpView());returnmv;}@RequestMapping(value="/comet",method=RequestMethod.POST)publicModelAndViewbroadcastMessage(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{this.doPost(request,response);ModelAndViewmv=newModelAndView(newNoOpView());returnmv;}protectedvoiddoGet(AtmosphereResourceresource,HttpServletRequestrequest,AtmosphereResponseresponse){response.setContentType("application/json");response.setCharacterEncoding("UTF-8");response.setHeader("Cache-Control","no-cache");response.setHeader("Pragma","no-cache");response.setDateHeader("Expires",0);Stringpath=request.getParameter("path");if(path==null||path.isEmpty()==true){sendError(resource,"");return;}intuserId=0;try{//从当前请求中获取,用户ID}catch(Exceptione){e.printStackTrace();DebugUtil.log("CometuserIderror:");DebugUtil.log(e.toString()+"n"+DebugUtil.getStack(e));}if(userId==0){sendError(resource,"");return;}Integernumber=addUserToroomsource(resource.uuid(),userId,path);Broadcasterbroadcaster=BroadcasterFactory.getDefault().lookup("/"+path,true);resource.setBroadcaster(broadcaster);resource.addEventListener(newmyAtmosphereResourceEventListener());resource.suspend();}privateIntegeraddUserToroomsource(Stringuuid,intuserId,Stringpath){returnnull;}privatevoidsendError(AtmosphereResourceresource,StringerrorMessage){sendError(resource,errorMessage,"");}publicstaticvoidsendError(AtmosphereResourceresource,StringerrorMessage,StringerrorInfo){StringBuilderjson=newStringBuilder("{"result":"");json.append(errorMessage);json.append(""");if(errorInfo!=null){json.append(","message":"");json.append(errorInfo);json.append(""");}json.append("}");Broadcasterb=BroadcasterFactory.getDefault().lookup("/error",true);b.addAtmosphereResource(resource);b.broadcast(json.toString());}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse){JSONObjectjsonObject=null;Stringpath=null;Stringmessage=null;try{Stringstr=request.getReader().readLine();if(str!=null){jsonObject=newJSONObject(str);}}catch(Exceptione){}if(!jsonObject.isNull("path")){path=jsonObject.getString("path");}if(!jsonObject.isNull("message")){message=jsonObject.getString("message");}AtmosphereResourceresource=(AtmosphereResource)request.getAttribute(ApplicationConfig.SUSPENDED_ATMOSPHERE_RESOURCE_UUID);Broadcasterbroadcaster=BroadcasterFactory.getDefault().lookup("/"+path);if(broadcaster!=null){broadcaster.broadcast(message);}}

解决方案六:
是不是程序判定为房间关闭了。
解决方案七:
引用5楼zhao50632的回复:

是不是程序判定为房间关闭了。

不会,因为新加入该房间的用户才会有一只被压住的情况,已经存在的用户还是可以正常聊天。
解决方案八:
是特定的框架吗?
解决方案:
引用7楼huxiweng的回复:

是特定的框架吗?

特定的框架?什么意思?就是atmosphere框架啊。
解决方案:
检查一下是不是在等待peer回写
解决方案:
引用8楼hujiang716013的回复:

Quote: 引用7楼huxiweng的回复:
是特定的框架吗?

特定的框架?什么意思?就是atmosphere框架啊。

光看get/post,没啥问题。
解决方案:
引用10楼huxiweng的回复:

Quote: 引用8楼hujiang716013的回复:
Quote: 引用7楼huxiweng的回复:
是特定的框架吗?

特定的框架?什么意思?就是atmosphere框架啊。

光看get/post,没啥问题。

整个程序就是这2个方法,get(请求被压住),post(接受数据,激活被压住的连接--广播)
解决方案:
引用9楼defonds的回复:

检查一下是不是在等待peer回写

我一直在怀疑,是不是源码的什么地方,进入了一个死锁状态。但是不知道如何去测试
解决方案:
不能加断点么。你这是直接部署服务器了?
解决方案:
引用13楼defonds的回复:

不能加断点么。你这是直接部署服务器了?

部署到服务器才会出现BUG,在本地测试,或者访问量很小的情况不会出现。就不知道如何在本地进行模拟访问???
解决方案:
用LoadRunner或者试试。也可以参考下:
解决方案:
引用15楼defonds的回复:

用LoadRunner或者试试。也可以参考下:

都用过了,没有用,LoadRunner11录制脚本,运行的时候会报错,一直会说资源找不到。JMeter只能模拟http请求,不能加载js,因为请求都是js去做的事情
解决方案:
那你自己写脚本模拟用户测吧:
解决方案:
引用17楼defonds的回复:

那你自己写脚本模拟用户测吧:

才疏学浅,
解决方案:
最笨的办法,就是你本机测试做服务器,让同事们访问,然后你就可以断点跟踪了
解决方案:
引用19楼defonds的回复:

最笨的办法,就是你本机测试做服务器,让同事们访问,然后你就可以断点跟踪了

这点访问量恐怕不够,我还是想想自己写脚本,谢谢你的提议。我也与框架作者交流过,一直没找出问题的原因所在,很是困惑。
解决方案:
引用20楼hujiang716013的回复:

Quote: 引用19楼defonds的回复:
最笨的办法,就是你本机测试做服务器,让同事们访问,然后你就可以断点跟踪了

这点访问量恐怕不够,我还是想想自己写脚本,谢谢你的提议。我也与框架作者交流过,一直没找出问题的原因所在,很是困惑。

这不一定是框架的问题,现在的问题是你根本就不知道是哪里的问题。
解决方案:
引用21楼defonds的回复:

Quote: 引用20楼hujiang716013的回复:
Quote: 引用19楼defonds的回复:
最笨的办法,就是你本机测试做服务器,让同事们访问,然后你就可以断点跟踪了

这点访问量恐怕不够,我还是想想自己写脚本,谢谢你的提议。我也与框架作者交流过,一直没找出问题的原因所在,很是困惑。

这不一定是框架的问题,现在的问题是你根本就不知道是哪里的问题。

我也一直在查找自身代码的原因,只能有一套完整的测试方法了,我才能去判断到底问题在哪里,请问你对tomcat的集群了解如何?
解决方案:
了解一些,这和你遇到的问题有联系么
解决方案:
引用23楼defonds的回复:

了解一些,这和你遇到的问题有联系么

现在考虑做,tomcat集群。但是主站项目的原因,不能与apache集成。现在的设想是N个tomcat集群,如何保证能共享广播数据?RedisBroadcaster这个atmosphere插件用过没?这个就是做集群的广播类,我现在配置上去有点问题,启动项目会报错:java.net.ConnectException:Connectionrefused:connect
解决方案:
你现在的问题不是单主机都不行么?你先解决单主机下的问题,再来问集群下广播数据的共享吧。
解决方案:
引用25楼defonds的回复:

你现在的问题不是单主机都不行么?你先解决单主机下的问题,再来问集群下广播数据的共享吧。

哎,现在是无头苍蝇,求给点意见,我也才出来工作。

时间: 2025-01-30 09:55:41

atmosphere框架求助的相关文章

jsp-导航使用超链接制作时怎么访问WEB-INF里的JSP页面?

问题描述 导航使用超链接制作时怎么访问WEB-INF里的JSP页面? 导航是使用超链接制作的,但是我要跳转的页面在WEB-INF 里面,显然这个包是受保护的,得使用forward跳转,但是导航栏是超链接形式的 ,这样的情况下我得怎么改?首先我是不想把页面放到WEB-INF外面,有什么方法能让我使用超链接访问WEB-INF里的页面或者使用forward的话我的导航需要怎么制作?希望给出详细的回答,能给我举个例子.下面是我使用的导航,实在网上找的例子,根据这个怎么改?或者有什么别的方法.不要给我简单

开源反向Ajax库:了解Atmosphere和CometD

本 系列 文章向您展示如何使用反向 Ajax 技术开发事件驱动的 Web 程序.第 1 部分 介绍了 Reverse Ajax.轮询.流.Comet 和长轮询.第 2 部分 介绍了如何使用 WebSocket 实现 Reverse Ajax,还讨论了使用 Comet 和 WebSocket 的 Web 服务器的限制.第 3 部分 探讨了当您需要支持多个服务器或提供一个用户可以自己的服务器上部署的独立 Web 应用程序时,您实现自己的 Comet 或 WebSocket 通信系统的过程中会遇到的一

ACE框架reactor同步问题求助?

问题描述 ACE框架reactor同步问题求助? //小弟在ACE reactor框架中开启一个定时器和一个接受器,代码如下:class Timer: public ACE_Event_Handler { virtual int handle_timeout (const ACE_Time_Value &current_timeconst void *act = 0);} int ACE_TMAIN(int argcACE_TCHAR *argv[]){ Sgl_Timer::instance(

html5- 新手求助,前端开发最好用框架吗?

问题描述 新手求助,前端开发最好用框架吗? 前端开发,最好要框架吗?有什么框架呢?比如做学校的失物招领系统 解决方案 前段开发如果是新手,我建议别着急学框架,先把javascript.jquery的基础学好.然后系统学习一种框架,然后所有框架就基本都会了.学框架,主 要学习框架的搭建思想.我推荐你系统学习bootstrap响应式框架.很强大的前端框架. 解决方案二: 没用最好的,框架只是看你的用途来挑选最合适的框架 解决方案三: 人个觉得使用框架能提升前端开发的效率,降低开发成本和周期.因为网站

工程中采用两种框架两种编码格式出现乱码问题 求助

问题描述 工程中采用两种框架两种编码格式出现乱码问题 求助 工程中用到了两种框架 两种编码格式 出现乱码 不知道怎么处理

j2ee-我们项目用J2EE框架spring-security....数据库传值和方法一团糊,求助......

问题描述 我们项目用J2EE框架spring-security....数据库传值和方法一团糊,求助...... RT,照他们说法里dao里面是空的,我照着之前项目简单写了个注册 然后之前项目说方法写在action上直接调用....(项目里就action,service....) 求写过类似项目的人来点大致流程思路逻辑......现在感觉几个地方都是断的,连不起来,页面上值也传不进数据库 第一次提问....麻烦大家了~ 解决方案 大概和mybatis一样~sql操作是写在xml里面的~dao里面只

struts-新手求助!在MyEclipse导入Struts框架搭建的项目出现404错误!

问题描述 新手求助!在MyEclipse导入Struts框架搭建的项目出现404错误! HTTP Status 404 - /16/WebRoot/admin_index.jsp type Status report message /16/WebRoot/admin_index.jsp description The requested resource is not available. Apache Tomcat/7.0.63 struts.xml的配置文件如下: <?xml versio

java 三大框架 关于Excel导入数据库导出数据库有没有视频或者其他教程,【新手求助】

问题描述 [新手求助]java三大框架关于Excel导入数据库导出数据库有没有视频或者其他教程,由于刚刚接触到,所以不是很清楚.求大神有教程的分享下,不尽感激 解决方案 解决方案二:查查api这类的网上很多的.解决方案三:java导入导出Excel跟框架无关的,网上的例子很多的,关于java操作Excel,有poi,jxl,java2word,这里有个poi的视频,你可以看下http://www.java1234.com/a/yuanchuang/poi/解决方案四:利用poi读取单元格然后组装

求助帖:springmvc3.0框架下如何接受SOCket报文呢

问题描述 项目采用springmvc3.0框架,现在有个客户端发送UDP报文到服务器,如何在现有的项目中集成socket服务器呢?如何启动socket服务器呢?现在的解决方案是在control层写了一个方法,每次收到运行这个方法启动服务器 解决方案