When  I revert to earlier config with localhost it starts working.

On Sat, Mar 1, 2014 at 6:18 PM, J Java <jforjava1...@gmail.com> wrote:

> 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
>
> Updated configuration..above is the complete configuration for my
> virtualhost.
>
>
>
> On Sat, Mar 1, 2014 at 6:14 PM, J Java <jforjava1...@gmail.com> wrote:
>
>> Mark,
>>
>>  following is how i have configured reverse proxy :
>>
>> 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
>>
>> I am using Apache 2.4 which comes with  mod_proxy_wstunnel module to support 
>> http upgrade to Websocket.
>>
>> Also my code works fine if I configure localhost everywhere, its just when I 
>> change it to use dummy host using window's hosts file and virtual host it 
>> stops working. And it upgrades to WebSocket but cant send or receive 
>> messages after that. Please find in detail configuration and code in my 
>> first post. Any pointers how to go about it will really help. Or let me know 
>> the right place to open bug for this.
>>
>> Thanks,
>>
>> Shailesh.
>>
>>
>>
>> On Sat, Mar 1, 2014 at 4:10 PM, Mark Thomas <ma...@apache.org> wrote:
>>
>>> 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
>>>
>>>
>>
>

Reply via email to