有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用应用程序设置WebSocket路径。springboot的属性

我可以使用应用程序设置WebSocket上下文路径吗。财产

我使用如下注释:

@ServerEndpoint(value = "${websocket.contextpath:/ws}", 
    decoders = MessageDecoder.class, 
    encoders = MessageEncoder.class)

根据我的申请。特性:

websocket.contextpath=/ws

但它不起作用。有人能帮我吗

我的Java代码(1.8)如下所示:

package com.planet;

import java.io.IOException;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;

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

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Component;

import com.planet.converter.DatabaseToolJSONToSQL;
@Component
@ServerEndpoint(value = "${websocket.contextpath:/ws}", 
    decoders = MessageDecoder.class, 
    encoders = MessageEncoder.class)
public class ServerWebSocket {
    
    private Session session;
    private static Set<ServerWebSocket> listeners = new CopyOnWriteArraySet<>();
    private static Logger logger = LogManager.getLogger(DatabaseToolJSONToSQL.class);

    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        listeners.add(this);
    }

    @OnMessage 
    public void onMessage(String message) {
        broadcast(message);
    }

    @OnClose
    public void onClose(Session session) 
    {
        listeners.remove(this);
    }

    @OnError
    public void onError(Session session, Throwable throwable) 
    {
        //Error
    }

    public static void broadcast(String message) 
    {
        for (ServerWebSocket listener : listeners) 
        {
            try 
            {
                listener.sendMessage(message);
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
                logger.error(e.getMessage());
            }
        }
    }

    private void sendMessage(String message) throws IOException 
    {
        this.session.getBasicRemote().sendText(message);
    }

}

共 (0) 个答案