On 1 March 2014 10:02:48 GMT, J Java <jforjava1...@gmail.com> wrote: >I tried debuggin tomcat sources. And compared the difference I am >getting >between normal tomcat websocket examples and my code. Only difference i >could found was tomcat example uses Abstract Protocol class to fire the >register session event and mine uses AjpProcessor(because I am using >tomcat >behind apache). but in AJpProcessor class it gets stuck and never calls >registersession for Websocket. > >I know above information might be utterlyt useless but this waht i have >understood ..guys I need this to be resolved ASAP. it was working fine >when >i was using localhost everywhere. since I changed it to dummy host it >has >stopped working
How is your reverse proxy configured? mod_jk doesn't support HTTP upgrade and the last time I looked mod_proxy support for WebSocket wasn't fit for purpose. Mark >On Sat, Mar 1, 2014 at 2:31 PM, J Java <jforjava1...@gmail.com> wrote: > >> >> 127.0.0.1 - - [01/Mar/2014:14:20:12 +0530] "GET >> /jkweb/js/angle/addAngle.js?_=1393663610411 HTTP/1.1" 200 4278 >> 127.0.0.1 - - [01/Mar/2014:14:20:41 +0530] "GET >> /jkweb/angle/validateDuplicateAngleName.action?angleName=angle7 >HTTP/1.1" >> 200 - >> phasingapp.com - - [01/Mar/2014:14:21:15 +0530] "GET >> >/jkweb/websocket/fileuploadtracker?uniqueTocken=9c9e740c-7171-4c33-bc92-e0a46cb2d2b5 >> HTTP/1.1" 101 - >> >> Above is the relevant log section of apache : could it be the cause >that >> websocket request is coming from phasingapp.com and others from >127.0.01 >> >> >> On Sat, Mar 1, 2014 at 1:53 PM, J Java <jforjava1...@gmail.com> >wrote: >> >>> I had recently implemented websocket on tomcat 7.0.50. my tomcat >runs >>> behind apache 2.4. I use Strtus 2 and Spring Security. It has >stopped >>> working. >>> >>> Problem : Websocket connection is opened successfully. Javascript >event >>> handler get fires successfully. Apache logs show that request was >accepted >>> as an protocol upgrade request with 101 code Tomcat access logs also >show >>> the same code 101 for protocol upgrade >>> >>> However on server side onOpen message is not fired. I tried sending >the >>> message as soon as connection is opened in javascript's event >handler.. >>> There is no error in javascript but Server side endPoint's onmessage >is >>> never called just like onOpen is never called. >>> >>> Here are the changes I made after which it has stopped working: >>> >>> Windows Host file : I use dummy host name through Windows host >file: >>> 127.0.0.1 phasingapp.com >>> 127.0.0.1 pricer.com >>> >>> URL of wesocket : >>> >>> old : ws://localhost:86/websocket/filuploadtrackerendpoint >>> new : ws://phasingapp.com:86/websocket/filuploadtrackerendpoint >>> >>> Added virtual host config for apache : >>> >>> <Location /jkweb/websocket/> >>> Require host phasingapp.com granted >>> </Location> >>> >>> JkMount /jkweb/* localtomcat >>> JkUnMount /jkweb/project/content/* localtomcat >>> JkUnMount /jkweb/angle/content/* localtomcat >>> JkUnMount /jkweb/index.jsp localtomcat >>> JkUnMount /jkweb/ localtomcat >>> >>> ProxyRequests Off >>> ProxyPreserveHost On >>> >>> ProxyPass /jkweb ! >>> ProxyPass /jkweb/ ! >>> ProxyPass /jkweb/websocket/ ws://localhost:8080/jkweb/websocket/ >>> ProxyPassReverse /jkweb/websocket/ >ws://localhost:8080/jkweb/websocket/ >>> ProxyPass / http://localhost:8080/jkweb/ >>> ProxyPassReverse / http://localhost:8080/jkweb/ >>> >>> Struts 2 : >>> >>> changed url pattern for Struts 2 filter from ".action to " /* ". >Also added exclusion filters >>> to strtus2 for webscoket urls : >>> >>> <constant name="struts.action.excludePattern" >value=".*websocket/.*"/> >>> >>> Everything seems to be working fine as i am gettting no error >anywhere in >>> apache,tomcat,spring security and Struts2 logs. >>> >>> However on server side no handlers are called? >>> >>> Earlier I had faced similar problem but it was because I had put >>> websocket-api jar in my WEB-INF/lib which was preventing websocket >>> connection from getting opened. No connection is opened but no >handler is >>> called after that and after some time connection is closed obviously >>> because of timout I suppose. >>> >>> Here is my ServerEndPoint class : >>> >>> package com.jkweb.websocket; >>> >>> import java.io.IOException; >>> import java.util.HashMap; >>> import java.util.List; >>> import java.util.Map; >>> >>> import javax.websocket.EndpointConfig; >>> import javax.websocket.OnMessage; >>> import javax.websocket.OnOpen; >>> import javax.websocket.Session; >>> import javax.websocket.server.PathParam; >>> import javax.websocket.server.ServerEndpoint; >>> >>> import org.slf4j.Logger; >>> import org.slf4j.LoggerFactory; >>> >>> @ServerEndpoint(value="/websocket/fileuploadtracker") >>> public class FileUploadTrackerEndPoint{ >>> private static final Logger logger = LoggerFactory >>> .getLogger(FileUploadTrackerEndPoint.class); >>> private static HashMap<String,Session> socketConnectionMap = >new HashMap<String,Session>(); >>> >>> @OnOpen >>> public void open(Session session) { >>> Map<String,List<String>> paramMap = >session.getRequestParameterMap(); >>> List<String> uniqueTockenValues = >paramMap.get("uniqueTocken"); >>> if(uniqueTockenValues != null && uniqueTockenValues.size() > >0){ >>> >socketConnectionMap.put(uniqueTockenValues.get(0),session); >>> } >>> } >>> @OnMessage >>> public void onMessage(Session session, String msg) { >>> try { >>> session.getBasicRemote().sendText(msg); >>> } catch (IOException e) { >>> logger.error(e.getMessage()); >>> } >>> } >>> >>> public static void sendMessage(String uniqueTocken,String msg){ >>> try { >>> Session wsSession = >socketConnectionMap.get(uniqueTocken); >>> wsSession.getBasicRemote().sendText(msg); >>> } catch (IOException e) { >>> logger.error(e.getMessage()); >>> } >>> } >>> } >>> >>> and my javascript code : >>> >>> createFileUploadWebSocket : function(){ >>> var that = this; >>> var uniqueTocken = $("#uniqueTocken").val(), >>> wsurl = >"ws://phasingapp.com:86/jkweb/websocket/fileuploadtracker?uniqueTocken="+uniqueTocken, >>> ws; >>> ws = new WebSocket(wsurl); >>> ws.onopen = function() >>> { >>> alert("opened..") //I get this aler sothis is >called >>> ws.send("test");//however this has not effect ...no >error but server end point is not called >>> }; >>> ws.onmessage = function (evt) >>> { >>> message = evt.data; >>> if(message == "Done."){ >>> alert("closing.."); >>> ws.close(); >>> >$('#progressbar').progressbar('option','value',100); >>> } >>> var currentVal = >$('#progressbar').progressbar('option','value'); >>> >$('#progressbar').progressbar('option','value',currentVal <= 80 >?currentVal+1 : currentVal); >>> }; >>> ws.onclose = function(evt) >>> { >>> // websocket is closed. >>> alert("Connection is closed..."+evt.code + >":"+evt.reason ); >>> }; >>> >>> ws.onerror = function(evt){ >>> alert("Connection is closed..."+evt.code + >":"+evt.reason ); >>> }; >>> >>> }, >>> >>> Thanks, >>> Shailesh. >>> >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org