WebSocket连接到' ...'失败:连接建立错误:net :: ERR_CONNECTION_TIMED_OUT

时间:2016-04-03 02:49:18

标签: java websocket openshift web.xml wildfly-8

我正在使用javax.websocket库在Java中创建一个Web套接字:

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/serverendpoint")

/**
 * This class creates websockets, opens, and maintains connection with the client
 */
public class serverendpoint {
    @OnOpen
    public void handleOpen () {
        System.out.println("JAVA: Client is now connected...");
    }

    @OnMessage
    public String handleMessage (String message) {
        if (message.equals("ping"))
            return "pong";
        else if (message.equals("close")) {
            handleClose();
            return null;
        }
        System.out.println("JAVA: Received from client: "+ message);
        // do something
        return aMessage;
    }

    @OnClose
    public void handleClose() {
        System.out.println("JAVA: Client is now disconnected...");
    }

    @OnError
    public void handleError (Throwable t) {
        t.printStackTrace();
    }
}

我正在使用Red Hat的Openshift平台来托管我的网站(使用HTTPS),该网站使用wss(安全网络套接字)。 该应用程序有一个www。网址(供参考) 。 webSocket的Javascript代码是:

var wsUri = "wss://" + document.location.hostname + ":8080" + document.location.pathname + "/../serverendpoint";
var webSocket = new WebSocket(wsUri); 

我阅读了this教程,因此更改了我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

    <web-app version="3.1"
             xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             metadata-complete="false">         

    </web-app>

为:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         metadata-complete="false">

             <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected resource</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>GET</http-method>
        </web-resource-collection>

        <!-- https -->
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

</web-app>

然后我将我的代码推送到Wildfly服务器(那些托管在Openshift上)。当我访问我的网站(使用Web套接字连接)时,它给了我以下错误:

enter image description here

当我的网站为HTTP并使用ws时,网络套接字连接有效。但我必须将其更改为HTTPS,因此我将webSocket URL(JavaScript)更改为使用wss和正确的端口:8080,然后我按照该教程(参见上文)更改web.xml。但我得到了上述错误。我做错了什么,我无法理解我的生活

我使用错误的端口(即8080)进行安全连接吗?

非常感谢你的帮助!

0 个答案:

没有答案