【问题标题】:Eclipse base HTML5 Websocket and GlassFishEclipse 基础 HTML5 Websocket 和 GlassFish
【发布时间】:2012-01-31 09:13:31
【问题描述】:

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

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

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

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

GF 3.1.1 支持web socket(从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 如下:

小服务程序

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

小服务程序

servlet 映射

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

servlet 映射


我不知道我做错了什么......

我如何检查我使用的 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 事件。

我已经执行了以下命令:-

作为管理员设置 configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.websockets-support-enabled=true

我正在使用像 safari 这样的浏览器,谷歌浏览器支持 websocket(我已经用下面的链接 http://websocket.org/echo.html URL 对其进行了测试)

谁能帮帮我…… ..

【问题讨论】:

  • 请使用GlassFish 3.1.2 的最新升级版本尝试您的代码。此版本包含实施 RFC 6455 的 Grizzly 1.9.46。3.1.1 中的 WS 代码已过时。

标签: eclipse glassfish websocket


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 2011-06-08
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多