相关疑难解决方法(0)

Websocket:如何将消息推送给目标用户

我正在尝试使用websocket并使用sock.js在spring中实现推送通知.

这些是代码片段:

    public class NotifyController {

        @MessageMapping("/notifications")
        @SendTo("/get/notifications")
        public Greeting greeting(HelloMessage message) throws Exception {
            new Greeting("Hello, " + message.getName() + "!");
        }
    }


    public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
        @Override
        public void configureMessageBroker(MessageBrokerRegistry config) {
            config.enableSimpleBroker("/get/notifications");
            config.setApplicationDestinationPrefixes("/gssocket");
        }

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

这是前面的代码..

    function connect() {
        var notificationSocket = new SockJS('/notifications');
        stompNotificationClient = Stomp.over(notificationSocket);

        stompNotificationClient.connect({}, function(frame) {
            console.log('Connected: ' + frame);
            stompNotificationClient.subscribe('/get/notifications', function(greeting){
                showGreeting(JSON.parse(greeting.body).content);
            });
        });
    }

    function sendNotification() {
        var name = "test" …
Run Code Online (Sandbox Code Playgroud)

java spring websocket

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

SpringMVC Websockets使用Spring Security进行消息传递用户身份验证

我已经看到了关于这个问题的几个主题,但它们似乎都没有直接回答这个问题.

背景,我在应用程序的其他部分安装了弹簧安全,工作和运行.我的用户名是"开发者".

在Java 7,Glassfish 4,Spring 4上运行,并使用Angular + StompJS

我们在这里得到一些代码:

package com.myapp.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketBrokerConfig extends AbstractWebSocketMessageBrokerConfigurer {

    public final static String userDestinationPrefix = "/user/";

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/stomp").withSockJS().setSessionCookieNeeded(true);
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.setApplicationDestinationPrefixes("/app");
        //registry.enableStompBrokerRelay("/topic,/user");
        registry.enableSimpleBroker("/topic", "/user");
        registry.setUserDestinationPrefix(userDestinationPrefix);


    }


}
Run Code Online (Sandbox Code Playgroud)

好的,现在这里是一个控制器,每隔3秒发送一次东西:

import org.springframework.messaging.simp.SimpMessagingTemplate;

…

@Autowired
private SimpMessagingTemplate messagingTemplate;

…

@Scheduled(fixedDelay = 3000)
public void sendStuff () 
{

    Map<String, Object> map = new HashMap<>(); …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-security websocket

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

spring ×2

websocket ×2

spring-mvc ×1

spring-security ×1