All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.litongjava.tio.http.server.sse.SsePacket Maven / Gradle / Ivy

package com.litongjava.tio.http.server.sse;

import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

import com.litongjava.tio.core.TioConfig;
import com.litongjava.tio.core.intf.Packet;

public class SsePacket extends Packet {
  private static final long serialVersionUID = 1L;
  private Charset charset = StandardCharsets.UTF_8;
  private String eventId;
  private String name;
  private String data;

  public SsePacket() {
    super();
  }

  public SsePacket(String id, String name, String data) {
    super();
    this.eventId = id;
    this.name = name;
    this.data = data;
  }

  public SsePacket(Charset charset, String id, String name, String data) {
    super();
    this.charset = charset;
    this.eventId = id;
    this.name = name;
    this.data = data;
  }

  public SsePacket eventId(String id) {
    this.eventId = id;
    return this;
  }

  public SsePacket name(String name) {
    this.name = name;
    return this;
  }

  public SsePacket data(String data) {
    this.data = data;
    return this;
  }

  public Charset getCharset() {
    return charset;
  }

  public void setCharset(Charset charset) {
    this.charset = charset;
  }

  public String getEventId() {
    return eventId;
  }

  public void setEventId(String id) {
    this.eventId = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getData() {
    return data;
  }

  public void setData(String data) {
    this.data = data;
  }

  public ByteBuffer toByteBuffer(TioConfig tioConfig) {
    // String message = "id:2\n" + "event:message\n" + "data:This is message 1" + "\n\n";
    StringBuffer stringBuffer = new StringBuffer();
    if (eventId != null) {
      stringBuffer.append("id:").append(eventId + "\n");
    }
    if (name != null) {
      stringBuffer.append("name:").append(name + "\n");
    }
    if (data != null) {
      stringBuffer.append("data:").append(data + "\n\n");
    }

    byte[] bytes = stringBuffer.toString().getBytes();

    // ByteBuffer的总长度是消息体长度
    int bodyLength = bytes.length;

    // 创建一个新的ByteBuffer
    ByteBuffer buffer = ByteBuffer.allocate(bodyLength);
    // 设置字节序
    buffer.order(tioConfig.getByteOrder());
    // 消息消息体
    buffer.put(bytes);
    return buffer;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy