angular5+SpringBoot+Websocket

介绍

前端使用angular5框架,后端使用springboot,使用Websocket协议建立长连接

SpringBoot

Using WebSocket to build an interactive web application 这是Spring官方的文档,找这么搭建就行。

关键

注意上面代码中的几个地址

  • '/gs-guide-webscoket' 用于建立长连接

  • '/app/hello' 用于客户端send

  • '/topic/greeting' 用于订阅,客户端send后触发,将response发个订阅的客户端

angular5

关键代码

import { Component } from '@angular/core';
import Stomp from 'stompjs';
import SockJS from 'sockjs-client';
import $ from 'jquery';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  private serverUrl = 'http://localhost:8080/gs-guide-webscoket'
  private title = 'WebSockets chat';
  private stompClient;

  constructor(){
    this.initializeWebSocketConnection();
  }

  initializeWebSocketConnection(){
    let ws = new SockJS(this.serverUrl);
    this.stompClient = Stomp.over(ws);
    let that = this;
    this.stompClient.connect({}, function(frame) {
      that.stompClient.subscribe("/topic/greeting", (message) => {
        if(message.body) {
          $(".chat").append("<div class='message'>"+message.body+"</div>")
          console.log(message.body);
        }
      });
    });
  }

  sendMessage(message){
    this.stompClient.send("/app/hello" , {}, message);
    $('#input').val('');
  }

}
复制代码

angular中调用Js的方法

不是每次都管用,先记在这里

import * as Stomp from 'stompjs';
import * as SockJS from 'sockjs-client';
import * as $ from 'jquery';
复制代码

参考的文章

好的,下面是一个简单的 Angular 和 Spring Boot 的代码示例,用于实现 WebSocket 广播和监听一条消息是否已读: 1. 在 Angular 中,我们可以使用 `WebSocket` 对象来建立 WebSocket 连接并发送和接收消息。下面是一个简单的示例: ```typescript import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-root', template: ` <div> <p>Received message: {{ message }}</p> </div> `, }) export class AppComponent implements OnInit { message: string; ws: WebSocket; ngOnInit() { this.ws = new WebSocket('ws://localhost:8080/ws'); this.ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log('Received message:', data); if (data.type === 'read') { this.message = 'Message has been read.'; } }; } sendMessage() { const message = { type: 'read', id: 1 }; this.ws.send(JSON.stringify(message)); } } ``` 在这个组件中,我们使用 `new WebSocket()` 方法建立了一个 WebSocket 连接,并在 `onmessage` 回调函数中接收和处理来自服务器的消息。如果收到了一个 `type` 为 `read` 的消息,我们将更新 `message` 变量以指示消息已被阅读。 我们还实现了一个 `sendMessage()` 方法,用于向服务器发送一条消息。 2. 在 Spring Boot 中,我们可以使用 Spring WebSocket 模块来处理 WebSocket 连接和消息。下面是一个简单的示例: ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new MessageHandler(), "/ws").setAllowedOrigins("*"); } } @Component public class MessageHandler extends TextWebSocketHandler { @Override public void handleTextMessage(WebSocketSession session, TextMessage message) throws IOException { String payload = message.getPayload(); System.out.println("Received message: " + payload); ObjectMapper mapper = new ObjectMapper(); Message msg = mapper.readValue(payload, Message.class); if (msg.getType().equals("read")) { // TODO: 标记消息为已读 } session.sendMessage(new TextMessage("Received message: " + payload)); } } public class Message { private String type; private int id; // getters and setters } ``` 在这个示例中,我们使用 `WebSocketConfigurer` 接口注册了一个 WebSocket 处理程序,并将其映射到 URL `/ws` 上。我们还创建了一个 `MessageHandler` 类,用于处理来自客户端的消息。如果接收到一个 `type` 为 `read` 的消息,我们可以在 `TODO` 注释处添加代码来标记消息为已读。 最后,我们创建了一个 `Message` 类,用于解析和序列化消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值