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) 个答案