0
votes

Env for project: - Eclipse 3.6 (Eclipse-jee-helios) + HTML5 + JavaScript + Websocket + (grizzly) Glassfish 3.1.1

I have deployed sample project and able to run using GF.

When i try to connect websocket it always call onClose.

I tried: - asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true

GF 3.1.1 supports web socket (Downloaded from http://glassfish.java.net/downloads/3.1.1-final.html)

Browser like safari and Google Chrome supports websocket (i am using latest browser and checked with http://websocket.org/echo.html URL)

Java Script:-

    var webSocket;

$(document).ready(
function() {

**var URL = "ws://localhost:8080/SampleGF/WebSocketChatServlet";**

      //Tried using and lot of combination of URLS
      var URL = "ws://localhost:8080/";
      var URL = "ws://localhost:8080/SampleGF";
      var URL = "ws://localhost:8080/SampleGF/WebSocketChatServlet";

webSocket = new WebSocket(URL);

//alert("WebSockets are " + (window.WebSocket ? "" : "not ") + "supported"); 

webSocket.onopen = function(event) {
    alert("OPEN")
}
webSocket.onmessage = function(event) {
    var $textarea = $('#messages');
    $textarea.val($textarea.val() + event.data + "\n");
    $textarea.animate({
    scrollTop : $textarea.height()
    }, 1000);
}
webSocket.onclose = function(event) {
    alert("CLOSE")
}

});

 function sendMessage() {
var message = $('#username').val() + ":" + $('#message').val();
webSocket.send(message);
$('#message').val('');
}

i have used ChatSocket.java, WebSocketChatServlet.java, ChatApplication.java as it is from below link: -

http://java.dzone.com/articles/creating-websocket-chat

i have added servlet-api.jar in my project library.

Ref. Link: - http://tech.amikelive.com/node-269/eclipse-quick-tip-resolving-error-the-import-javaxservlet-cannot-be-resolved/

Web.xml: -

I have added servlet and servlet-mapping as below:

servlet

    description    WebSocketChatServlet  description 
    servlet-name   WebSocketChatServlet  servlet-name
    servlet-class  org.trivadis.websocket.servlet.WebSocketChatServlet  servlet-class

servlet

servlet-mapping

servlet-name  WebSocketChatServlet    servlet-name
url-pattern   /WebSocketChatServlet   url-pattern

servlet-mapping


I am not sure what i am doing wrong....

How can i check URL i am using is correct or not for websocket.

GF location is D:\glassfish3\glassfish for my project. Project location D:\workspace\SampleGF

Another reason: -

Even I tried WAR sample from below link: -

http://jarvana.com/jarvana/search?search_type=project&project=grizzly-websockets-chat

WAR File Name: -grizzly-websockets-chat-1.9.45.war

I have imported above war file in Eclipse and deployed it on glassfish 3.1.1 server. After running it application always call onclose event.

I have executed below command: -

asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true

and I am using browser like safari and Google Chrome supports websocket (i have tested it with below link http://websocket.org/echo.html URL)

Can anyone help me out…..

1
Please try your code with the latest promoted build of GlassFish 3.1.2. This build contains Grizzly 1.9.46 which implements RFC 6455. The WS code in 3.1.1 is outdated. - rlubke

1 Answers

2
votes

It's been months since I tried to run published sample-code against grizzly. I may be out of date, but it didn't work when I tried it. The guy who published the sample eventually admitted problems in the discussion posts below his article. Since I haven't tried it since, I don't know whether it's been fixed yet; i.e. I don't have confirmation that grizzly works yet. (If someone knows of a working sample, I'm as interested as you are.)

In the mean time, you can try this alternative for running your client code. You can even check what you're doing against the free downloadable JavaScript code if you wish. http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html

If you get your code to work against this server, then try again with grizzly. I'll be interested in the results.