2017-06-28 18 views
1

我需要映射網絡套接字。在Servlet中,我使用註釋或web.xml進行映射,但是如何爲服務器套接字創建url模式。如果我在我的webapp文件夾中有index.html如何確定URL模式的瀏覽器,這將與我的頁面相關聯?如何將web-socket映射到url模式?

我有服務器部分:

@ApplicationScoped 
@ServerEndpoint(value = "/index")// May be this mapping but it's don't work. 
public class ChatServer { 
    private static final Logger LOGGER = 
      Logger.getLogger(ChatServer.class.getName()); 

    @OnOpen 
    public void onOpen(Session session) { 
     LOGGER.log(Level.INFO, "New connection with client: {0}", 
       session.getId()); 
    } 

    @OnMessage 
    public String onMessage(String message, Session session) { 
     LOGGER.log(Level.INFO, "New message from Client [{0}]: {1}", 
       new Object[] {session.getId(), message}); 
     return "Server received [" + message + "]"; 
    } 

    @OnClose 
    public void onClose(Session session) { 
     LOGGER.log(Level.INFO, "Close connection for client: {0}", 
       session.getId()); 
    } 

    @OnError 
    public void onError(Throwable exception, Session session) { 
     LOGGER.log(Level.INFO, "Error for client: {0}", session.getId()); 
    } 
} 

而且我index.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>JEE7 WebSocket Example</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <script> 
     var chatClient = new WebSocket("ws://localhost:8080"); 

     chatClient.onmessage = function(evt) { 
      var p = document.createElement("p"); 
      p.setAttribute("class", "server"); 
      p.innerHTML = "Server: " + evt.data; 
      var container = document.getElementById("container"); 
      container.appendChild(p); 
     }; 
     function send() { 
      var input = document.getElementById("message"); 
      var p = document.createElement("p"); 
      p.setAttribute("class", "client"); 
      p.innerHTML = "Me: " + input.value; 
      var container = document.getElementById("container"); 
      container.appendChild(p); 
      chatClient.send(input.value); 
      input.value = ""; 
     } 
    </script> 
</head> 
<body> 
<h1>JEE7 WebSocket Example</h1> 
<div id="container"> 

</div> 
<input type="text" id="message" name="message" /> 
<button type="button" id="send" onclick="send()">Send</button> 
</body> 
</html> 

如何相關的我的服務器側index.html拿到我html到瀏覽器?

+0

的網址應該是'WS://本地主機:8080/index' –

回答

1

WS://本地主機:8080 /的contextPath /指數