Eclipse 基础 HTML5 Websocket 和 GlassFish

发布于 2024-12-29 21:03:06 字数 3753 浏览 1 评论 0原文

项目环境:- Eclipse 3.6 (Eclipse-jee-helios) + HTML5 + JavaScript + Websocket + (grizzly) Glassfish 3.1.1

我已经部署了示例项目并能够使用 GF 运行。

当我尝试连接 websocket 时,它总是调用 onClose。

我尝试过:- asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true

GF 3.1.1 支持 Web 套接字 (从 http://glassfish.java.net/downloads/3.1.1-final.html)

像 safari 和 Google Chrome 这样的浏览器支持 websocket (我正在使用最新的浏览器并使用 http://websocket.org/echo.html URL)

Java 脚本:-

    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('');
}

我使用了 ChatSocket.java、WebSocketChatServlet.java、ChatApplication.java,因为它来自以下链接: -

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

我已经在我的项目库中添加了 servlet-api.jar

参考号链接: - http://tech.amikelive.com/node-269/eclipse-quick-tip-resolving-error-the-import-javaxservlet-cannot-be-resolved/

Web.xml: -

我添加了 servlet 和 servlet-mapping,如下所示:

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


我不确定我做错了什么......

我如何检查我的 URL我使用的 websocket 是否正确。

我的项目的 GF 位置是 D:\glassfish3\glassfish 。 项目位置 D:\workspace\SampleGF

另一个原因: -

即使我尝试了以下链接中的 WAR 示例: -

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

WAR 文件名: -grizzly-websockets-chat -1.9.45.war

我已在 Eclipse 中导入上述 war 文件并将其部署在 glassfish 3.1.1 服务器上。运行它后,应用程序总是调用 onclose 事件。

我已执行以下命令: -

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

我正在使用 safari 和 Google Chrome 等浏览器支持 websocket (我已经用下面的链接测试了它 http://websocket.org/echo.html URL)

任何人都可以帮助我......

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…..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

能否归途做我良人 2025-01-05 21:03:06

自从我尝试针对 grizzly 运行已发​​布的示例代码以来已经有几个月了。我可能已经过时了,但是当我尝试时它不起作用。发布样本的人最终在他的文章下面的讨论帖子中承认了问题。由于我没有尝试过,所以我不知道它是否已修复;即我还没有确认 grizzly 是否有效。 (如果有人知道工作示例,我和您一样感兴趣。)

同时,您可以尝试使用此替代方法来运行客户端代码。如果您愿意,您甚至可以根据免费下载的 JavaScript 代码检查您正在做什么。
http://highlevellogic.blogspot.com/2011/09/websocket-server -demonstration_26.html

如果您的代码可以在该服务器上运行,请使用 grizzly 重试。我会对结果感兴趣。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文