Я создал веб-сокет JSR 356 в Spring mvc с именем / rtisTrackDataGIS и хотел подключить его в требуемом js (внешний интерфейс ip = 192.168.101.158), а ip сервера - 192.168.113.157, поэтому в основном я подключаюсь квеб-сокет над перекрестными источниками и
@ServerEndpoint( value="/rtisTrackDataGIS", configurator = SpringConfigurator.class, encoders = {WebSocketDataEncoder.class} )
public class SendTrainsInfoToClients {
UtilService utilService;
static ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor();
private static Set<Session> allSessions= Collections.synchronizedSet(new HashSet<Session>());
@Autowired
public void SendTrainsInfoToClients(UtilService utilService){
this.utilService = utilService;
}
@OnOpen
public void showRTISGISData(Session session){
allSessions.add(session);
// start the scheduler on the very first connection
// to call sendRTISGISDataToAll every second
if(allSessions.size() == 1){
System.out.println("Ok WebSocket opened - session id : " + session.getId());
timer.scheduleAtFixedRate(()->sendRTISGISDataToAll(), 0, 120, TimeUnit.SECONDS);
}
}
@OnClose
public void onClose(Session session){
System.out.println("WebSocket Closed - session id : " + session.getId());
allSessions.remove(session);
}
private void sendRTISGISDataToAll(){
String data = null;
if(allSessions.size() >= 1){
data ="sadasdad";
}
//System.out.println(data);
for(Session sess: allSessions){
try{
//System.out.println("Sending Trains Track data to client with session id "+sess.getId());
sess.getBasicRemote().sendText(data);
//sess.getBasicRemote().sendObject(jsonObject);;
} catch(IOException ioe) {
System.out.println(ioe.getMessage());
} catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
public static void sendGISDataToAll(String message){
String data = null;
if(allSessions.size() >= 1){
data ="sadasdad";
}
//System.out.println(data);
for(Session sess: allSessions){
try{
//System.out.println("Sending Trains Track data to client with session id "+sess.getId());
sess.getBasicRemote().sendText(message);
//sess.getBasicRemote().sendObject(jsonObject);;
} catch(IOException ioe) {
System.out.println(ioe.getMessage());
} catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
}
, и я также включил corsfilter и добавил сервер в качестве перекрестного источника, это прекрасно работает с остальным контроллером API, но не подключает веб-сокет, который я создал
public class CORSFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
System.out.println(
"Request Character: " + req.getRemoteAddr() + "--" + ((HttpServletRequest)req).getRequestURL() + "--" + ((HttpServletRequest) req).getMethod());
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request=(HttpServletRequest)req;
// System.out.println("Response Character: ");
response.setHeader("Access-Control-Allow-Origin","https://192.168.101.158:8443");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");//
response.setHeader("Access-Control-Max-Age", "3600");//prevous was 3600
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"); //
response.setHeader("Access-Control-Allow-Credentials", "true");
if("OPTIONS".equalsIgnoreCase(request.getMethod()))
{
response.setStatus(HttpServletResponse.SC_CREATED);
}
else
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
и подключил веб-сокет с 192.168.101.158 к 192.168.113.157
var socket = Socket("https://192.168.113.157:8443/HLS_BACKEND/rtisTrackDataGIS");
socket.on("message", function(event){
var data = event.data;
console.log(data);///////////////////////////////////
, затем я не могу подключиться, могу ли я указать какие-либо cors = в @ ServerEndpoint