标签: sockjs

从控制台删除Sockjs调试信息?(的NodeJS)

出于某种原因,sockjs将一堆请求信息打印到我的控制台中.我没有告诉它在我的代码中的任何地方这样做.

例如;

GET /echo/info 1ms 200
GET echo/332/ed2323/websocket 1ms 
etc
Run Code Online (Sandbox Code Playgroud)

有可能以某种方式扭转这种局面吗?

node.js sockjs

1
推荐指数
1
解决办法
1330
查看次数

如何在spring mvc中使用websocket检测客户端已断开连接

我希望能够检测到用户何时失去了与服务器的连接(关闭的选项卡、失去了互联网连接等)我在我的客户端上通过 Sockjs 使用 stompjs,在我的服务器上使用 spring mvc websockets。

我如何检测客户端何时失去连接。这是我如何配置我的 websocket 消息 brocket:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
    @Autowired
    private TaskScheduler scheduler;

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic").setHeartbeatValue(new long[]{10000, 10000}).setTaskScheduler(scheduler);
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/web").setAllowedOrigins("*").withSockJS();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器类,它实际上处理传入的套接字消息:

@RestController
@CrossOrigin
public class WebMessagingController {

    @MessageMapping("/chat/message")
    public void newUserMessage(String json) throws IOException {
        messagesProcessor.processUserMessage(json);
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道如果我使用从TextWebSocketHandler扩展的类,我将有 bean 能够覆盖在客户端连接和断开连接时调用的方法,但我认为这不适用于sock-js 客户端。谢谢你。

spring-mvc sockjs spring-websocket stompjs

1
推荐指数
1
解决办法
4730
查看次数

一次请求中从 JS 到 Spring 的多个 STOMP 订阅

目标是使用 Web 界面和 Spring 框架进行多房间聊天。看起来STOMP over SockJS是此类项目的最佳组合。STOMP 基于目的地的订阅解决了所有广播问题。但是,如果用户一次使用 100 个(例如)聊天,我需要在每次登录时从 Web 客户端发送 100 个订阅请求。

所以我正在寻找替代的单请求解决方案。让我来整理一下问题:

1) 有没有一种方法可以同时向多个订阅发出一个客户端 STOMP 请求?如果可以使用其他 JS 库发出这样的请求 - 那么我会很高兴尝试它。

2)有没有办法从Spring后端发起订阅?最好在服务器端为一个客户端注册多个目标消息查询 - 我可以为此使用特殊请求或在登录期间执行此操作。

3)关于这个问题还有其他建议吗?再说一遍:我很高兴尝试其他流行技术作为最后的手段。

下面的代码是最简单的 echo 服务。我只是测试这个协议和技术。

基本客户端代码:

window.onload = function () {
    window.s = new SockJS("http://localhost:8080/portfolio");
    window.s.onopen = function () {
        window.stompClient = Stomp.over(window.s);

        stompClient.connect('admin', 'admin', function(frame) {
            console.log('Connected: ', frame);
            stompClient.subscribe('/topic/echo', function(messageOutput) {
                console.log(messageOutput.body);
            })}, function(e){console.log("Fail My: ", e);})();
    };
};
Run Code Online (Sandbox Code Playgroud)

踩踏配置:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

javascript java spring stomp sockjs

0
推荐指数
1
解决办法
4940
查看次数

SockJS是如何选择协议的?

我将首先从我所知道的开始,因为它可能对其他人有用。

很明显,您可以使用协议子集实例化 SockJS:

sockJsProtocols = ["xhr-streaming", "xhr-polling", ....];
socket.cliente = new SockJS(url, null, {transports: sockJsProtocols}));
Run Code Online (Sandbox Code Playgroud)

我还发现,当 SockJS 调用 /info 端点时,服务器返回 websockets true 或 false(取决于服务器兼容性)。

我还知道这里有一个漂亮的表,有 3 列:websockets、流式传输和轮询。

但我有两个问题:

1) SockJS 如何决定轮询、流式传输还是 websocket?它不能与浏览器兼容性有关,因为我在日志中看到许多使用最新浏览器的 XHRStreaming 会话。怎么这在任何地方都没有记录?

2)为什么SockJS每次都需要调用/info?服务器的兼容性将始终相同。

websocket sockjs spring-websocket

0
推荐指数
1
解决办法
1458
查看次数