Java EE中的WebSockets?

时间:2014-08-07 19:35:56

标签: java java-ee websocket

在我开始这个问题之前,我想说我是WebSockets的新手。

我必须创建一个与服务器联系的客户端,并检索服务器发送的数据。 (使用用户名和密码)。

我已尝试使用此功能:http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html

没有成功(我不确定我应该使用哪个websocket jar,所以我只是导入了jetty-all jar文件)。我的程序与我提供的教程完全一样,但是一旦我运行它。它充满了错误(错误与导入的jar文件有关)。

现在我转向Java EE WebSocket教程:http://docs.oracle.com/javaee/7/tutorial/doc/websocket.htm

我无法理解我的生活。

我没有要求提供完整的代码,也许是关于如何使用Java EE解决此问题的指南。我很难找到纯粹基于Java的客户端的在线资源。

1 个答案:

答案 0 :(得分:0)

如果你有时间(一小时)进一步研究这项技术,这里有一篇关于Java套接字的好教程:http://docs.oracle.com/javase/tutorial/networking/sockets/

以下是服务器端套接字的一些基本示例代码:

private final static int PORT_NUMBER = 3333;
    try (
        //ServerSocket listening to port 3333
        ServerSocket serverSocket =
            new ServerSocket(PORT_NUMBER);
        //ServerSocket.accept(); blocks program execution until a client socket connects,
        //put it in a loop to listen for continuous connections
        Socket clientSocket = serverSocket.accept();    
        PrintWriter out =
            new PrintWriter(clientSocket.getOutputStream(), true);                  
        BufferedReader in = new BufferedReader(
            new InputStreamReader(clientSocket.getInputStream()));
    ) {
        //Read data from streams
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            out.println(inputLine);
        }
    } catch (IOException e) {
        System.out.println("Exception caught when trying to listen on port "
            + portNumber + " or listening for a connection");
        System.out.println(e.getMessage());
    }

在客户端,您使用Socket连接到ServerSocket:

    Socket echoSocket = new Socket(hostName, portNumber);

例如,“hostname”可以是“localhost”,上面示例中的“portnumber”将是“3333”。主机名是您要连接的IP。

代码示例来自Oracle.com,在我链接的教程中。