0

私は grails 3.0.9 を使用しています。javax.websocket を使用してチャット アプリケーションを作成します。

これは私のコードです...

`

    import grails.util.Environment

    import javax.servlet.ServletContext
    import javax.servlet.ServletContextEvent
    import javax.servlet.ServletContextListener
    import javax.websocket.server.ServerEndpoint
    import javax.websocket.server.ServerContainer
    import javax.websocket.OnMessage
    import javax.websocket.OnOpen
    import javax.websocket.OnClose
    import javax.websocket.OnError
    import javax.servlet.annotation.WebListener

    @WebListener
    @ServerEndpoint("/chatEndPoint")
    class ServerEndPointDemo implements ServletContextListener {

        @Override
        public void contextInitialized(ServletContextEvent event) {
            ServletContext servletContext = event.servletContext
            final ServerContainer serverContainer = servletContext.getAttribute("javax.websocket.server.ServerContainer")
            try {
                if (Environment.current == Environment.DEVELOPMENT) {
                    serverContainer.addEndpoint(ServerEndPointDemo)
                }
                println "--- we have a connection"
                int defaultMaxSessionIdleTimeout = 0 //config.timeout ?: 0
                serverContainer.defaultMaxSessionIdleTimeout = defaultMaxSessionIdleTimeout
            }
            catch (IOException e) {
                log.error e.message, e
            }
        }

        @Override
        public void contextDestroyed(ServletCo

ntextEvent event) {
    }


    @OnOpen
    public void  handleOpen(){
        println "is connecting"
    }
    @OnClose
    public void  handleClose(){
        println "closed lah!"
}
@OnMessage
public String handleMessage(String message){
    println "receiveed message from client = "+message
    return "my message~"
}
@OnError
public void  handleError(Throwable t){
    println "error ~"
    }
}

これは私のコントローラーです..

chatController.groovy

package com.akiong.maintenance
class ChatController  {
    def index() {
    }
}

これは私のgspです

インデックス.gsp

<html>
<head>    
    <title>Chatting</title>
    <script language="javascript" type="text/javascript">
        var websocket;
        function init() {
            output = document.getElementById("output");
        }
        function send_echo() {
            var wsUri = "ws://localhost:8080/chatEndPoint";
            writeToScreen("Connecting to " + wsUri);
            websocket= new WebSocket(wsUri);
            websocket.onopen = function (evt) {
                writeToScreen("Connected !");
                doSend(textID.value);
            };
            websocket.onmessage = function (evt) {
                writeToScreen("Received message: " + evt.data);
                websocket.close();
            };
            websocket.onerror = function (evt) {
                writeToScreen('<span style="color: red;">ERROR:</span> '
                + evt.data);
                websocket.close();
            };
        }
        function showErrorInfo(e) {
            alert('Error connecting socket'+e);
        }

        function doSend(message) {
            websocket.send(message);
            writeToScreen("Sent message: " + message);
        }
        function writeToScreen(message) {
            var pre = document.createElement("p");
            pre.style.wordWrap = "break-word";
            pre.innerHTML = message;
            output.appendChild(pre);
        }
        window.addEventListener("load", init, false);
    </script>
</head>
<body>
    <h1>Echo Server</h1>
    <div style="text-align: left;">
        <form action="">
            <input onclick="send_echo()" value="Press to send"
                   type="button">
            <input id="textID" name="message" value="Hello Web Sockets"
                   type="text">
            <br>
        </form>
    </div>
    <div id="output"></div>
</body>
</html>

わかりません..エンドポイントに接続できません...

私はすでにこの質問を読んでいますgrails javax.websocket issues

しかし、私はgrails 3.0.9を使用していますが、grails 3.0.9の下には「スクリプト」を含むフォルダーがないため、見た目が異なります

4

0 に答える 0