WebSockets, GlassFish, Grizzly -- 无法连接



我正在尝试开始使用WebSockets,并试图编写一个简单的应用程序,通过websocket来回发送消息。

然而,它看起来像我试图创建的套接字从未连接。为什么会这样呢?

下面是我的WebSockets类的代码。当.onConnect()被调用时,它记录:

我是套接字,我已连接。我接通了吗?——假

更新:在JavaScript中,我创建了有问题的套接字,readyState1,这意味着"套接字打开,通信是可能的"。

import a.b.Misc; //writes logs.
import com.sun.grizzly.websockets.BaseServerWebSocket;
import com.sun.grizzly.websockets.DataFrame;
import com.sun.grizzly.websockets.WebSocketListener;
public class ChatWebSocket_v2 extends BaseServerWebSocket {
    private String user;
    public ChatWebSocket_v2(WebSocketListener... listeners) {
        super(listeners);
    }
    public String getUser() {
        if (user == null) {
            Misc.print("User is null in ChatWebSocket");
            throw new NullPointerException("+=The user is null in chat web socket");
        }
        return user;
    }
    public void setUser(String user) {
        Misc.print("Just set user: " + user);
        this.user = user;
    }
    @Override
    public void onMessage(String message) {
        Misc.print(message +"n");
    }
    @Override
    public void onMessage(byte[] message) {
        Misc.print(new String(message) +" << Bytesn");
    }
    @Override 
    public void onConnect() {
        Misc.print("I am socket, i was connected. Am i connected? - " + this.isConnected());
    }
    @Override 
    public void onClose(DataFrame df) {
        Misc.print("I am socket, i was closed");
    }
}

如果你只是想在某处建立连接,你可能想试试这个。有一个实时的工作演示,你可以下载javascript代码和自己玩它。请注意,javascript代码只工作,如果你有它安装在服务器上(由于浏览器安全,因为它是"花哨")。还有一个一步一步的基于浏览器的客户端教程,我将在它准备好后尽快发布。大多数代理服务器还没有升级到处理websocket,所以他们会搞砸连接请求,大多数人将无法从工作中连接到websocket服务器。Firefox 7(发行版)、Google Chrome 14及以上版本支持最新版本的websocket协议。

如果你想试着让grizzly演示工作,你可能需要做一些调试,也许我可以帮你。请注意,在文章下面的评论中,其他人说他们也无法使用它,我还没有发现任何后续行动。在这一点上,它似乎并不比上面的echo应用程序好,即使我们让它运行起来,如果你只是想开始,它可能过于复杂和缺乏文档。但是如果你想让它运行,你应该在这里"git"最新版本的代码,至少是最近提交的,可能会被修复。

然后确保应用程序javascript文件中的app.url设置为您的安装目录。它被硬编码为:

url: 'ws://localhost:8080/grizzly-websockets-chat/chat',

如果你使用的是Firefox 7,需要修改javascript以使用Moz前缀,例如:

  if (typeof MozWebSocket != "undefined") { // window.MozWebSocket or "MozWebSocket" in window
    ok
  } else if (window.WebSocket) {  // he uses  if ("WebSocket" in window)
    ok
  } else {
    do your print "browser doesn't support websockets"
  }
  .... then if the browser supports websockets
  websocket = new WebSocket(app.url); or
  websocket = new MozWebSocket(app.url); 
  // depending on which it is.

HLL websocket服务器演示代码已经把这些都整理好了。

(另一个)更新:当我自己通过灰灰工作时,我发现在glassfish管理控制台的快速开始中,有一个很容易设置和运行的hello示例。你会在那里找到说明。示例目录还包含一个名为:websocket-mozilla;所以我猜它应该使用websockets。熟悉jsp的人应该检查源代码。我所能看到的是它正在使用http会话。根本没有提到websocket。

相关内容

  • 没有找到相关文章

最新更新