2015-03-27 2 views
0

Я бегу:WebSocket получает 404 при открытии соединения

  • Tomcat 7
  • Java Версия 1.8
  • Chrome браузер версии 41.0.2272.89 м

Я пытаюсь получить мой websocket для работы, но по какой-то причине я получаю 404 (In chrome) при попытке получить доступ к сокету.

WebSocket connection to 'ws://localhost:8080/InfiniteCloud/WebSocketExchange' failed: Error during WebSocket handshake: Unexpected response code: 404 

Ошибка возникает, когда я пытаюсь открыть соединение. Я просмотрел много предыдущих вопросов с этого форума, но не работал. Вот мой сервер код стороны:

package websocket; 

import java.util.Collections; 
import java.util.HashSet; 
import java.util.Set; 

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

import org.json.simple.JSONObject; 

@ServerEndpoint(value = "/ClientDataExchange") 
public class WebSocketExchange { 

    static Set<Session> _users = Collections.synchronizedSet(new HashSet<Session>()); 

    @OnOpen 
    public void handleOpen(Session userSession){ 
     _users.add(userSession); 
    } 

    @OnMessage 
    public void handleMessage(String message, Session userSession){ 
     try{ 

      if(userSession.getUserProperties().get("username") == null){ 
       userSession.getUserProperties().put("username", message); 
       userSession.getBasicRemote().sendText(newUserJSONResponse(message)); 
      } 
      System.out.println("Message: " + message); 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

    @OnClose 
    public void handleClose(Session userSession){ 
     _users.remove(userSession); 
    } 

    public String newUserJSONResponse(String username){ 
     JSONObject j = new JSONObject(); 
     j.put("ICmessage", "You are now connected as: " + username); 

     return j.toJSONString(); 
    } 
} 

стороны клиента Код:

var websocket = null; 

function sendMessage(){ 
    websocket.send("Justin"); 
} 

function testWebSocket(){ 
    var url = "ws://" + document.location.host + document.location.pathname + "WebSocketExchange"; 

    websocket = new WebSocket(url); 

    websocket.onopen = function(){ 
     console.log("Connected to: " + url); 
    } 

    websocket.onmessage = function processMessage(message){ 

     var jsonData = JSON.parse(message.data); 

     if(jsonData.message != null){ 
      console.log(jsonData.message); 
     }else{ 
      console.log("Empty message..."); 
     } 
    } 

    websocket.onclose = function(){ 
     console.log("Closing connection to: " + url); 
    } 
} 
+0

кажется, что ваши пути не совпадают. На сервере у вас есть @ServerEndpoint (value = "/ ClientDataExchange"), а на клиенте у вас есть var url = "ws: //" + document.location.host + document.location.pathname + "WebSocketExchange"; –

+0

Спасибо! Я понятия не имею, как я это пропустил. Сделайте ответ, чтобы я мог дать вам ответ! :) –

+0

отлично! создал ответ) –

ответ

0

кажется, что ваши пути не совпадают. На сервере у вас есть

@ServerEndpoint(value = "/ClientDataExchange")

И на клиенте у вас есть

var url = "ws://" + document.location.host + document.location.pathname + "WebSocketExchange"; 
Смежные вопросы