常用的config,redis、webSocket

redis:

@EnableCaching
@Configuration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        //key hasKey的序列化
        redisTemplate.setKeySerializer(stringRedisSerializer);
        redisTemplate.setHashKeySerializer(stringRedisSerializer);

        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }

    @Bean
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
        stringRedisTemplate.setConnectionFactory(redisConnectionFactory);
        return stringRedisTemplate;
    }

    @Bean
    public RedisTemplate<Object, Object> redisTemplateMessage(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);

        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;

    }

    @Bean
    public WebSocketManager webSocketManager(){
        return  new WebSocketManager();
    }
}

webSocket:

@Configuration
@Component
public class WebSocketConfig {

    /**
     * 服务器节点
     *
     * 如果使用独立的servlet容器,而不是直接使用springboot的内置容器,就不要注入ServerEndpointExporter,因为它将由容器自己提供和管理
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用fastadmin实现redis即时通讯功能,需要进行以下步骤: 1. 安装redis 在服务器上安装redis,可以通过yum、apt-get等命令进行安装。安装完成后,启动redis服务。 2. 配置fastadmin 在fastadmin的配置文件,添加redis的相关配置信息。可以参考以下示例: ```php // redis配置 'redis' => [ 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', 'timeout' => 5, 'database' => 0, ], ``` 3. 实现即时通讯功能 在fastadmin,可以使用swoole扩展实现即时通讯功能。需要在控制器编写相关代码,实现消息的接收和发送。 以下是一个示例: ```php use swoole_websocket_server; use swoole_websocket_frame; class ChatController extends Controller { public function index() { $server = new swoole_websocket_server("0.0.0.0", 9501); $server->on('open', function (swoole_websocket_server $server, $request) { echo "client-{$request->fd} is connected\n"; }); $server->on('message', function (swoole_websocket_server $server, swoole_websocket_frame $frame) { $msg = json_decode($frame->data, true); $redis = new \Redis(); $redis->connect(config('redis.host'), config('redis.port')); $redis->auth(config('redis.password')); $redis->select(config('redis.database')); $redis->rpush('chat_messages', json_encode($msg)); $server->push($frame->fd, json_encode(['status' => 'success'])); }); $server->on('close', function ($server, $fd) { echo "client-{$fd} is closed\n"; }); $server->start(); } } ``` 在上面的代码,当有客户端连接时,会输出连接成功的消息;当有消息发送时,会将消息存储到redis,并给客户端发送成功状态的消息。 4. 实现消息展示功能 在页面展示消息的功能,可以通过ajax轮询或者websocket实现。以下是一个通过ajax轮询实现的示例: ```javascript function getMessages() { $.ajax({ url: '/chat/get_messages', type: 'get', dataType: 'json', success: function (data) { if (data && data.length > 0) { for (var i = 0; i < data.length; i++) { var msg = data[i]; $('#messages').append('<div>' + msg.user + ': ' + msg.content + '</div>'); } } }, complete: function () { setTimeout(getMessages, 1000); } }); } getMessages(); ``` 在上面的代码,通过ajax向后端发送请求,获取消息列表,如果有新的消息,则将其展示在页面上。 5. 总结 通过以上步骤,就可以在fastadmin实现redis即时通讯功能了。当有消息发送时,会将消息存储到redis,当有客户端请求时,会从redis获取消息列表,并展示在页面上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值