【发布时间】: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。
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