美文网首页
web客户端对接sse服务,实现打字效果

web客户端对接sse服务,实现打字效果

作者: 彩云飘过 | 来源:发表于2024-02-01 16:05 被阅读0次

参考网址 https://www.cnblogs.com/HTLucky/p/17326459.html

新建文件 httpsseClient.js

// 'use strict';

import { fetchEventSource } from "@microsoft/fetch-event-source";

import { reactive } from "vue";

let eventSource = null;

const sseClientMsg = reactive({

  data: "",

});

const createSSClient = (callback = null) => {

  // createSSClientGet();

  createSSClientPost(callback);

};

const createSSClientGet = (callback = null) => {

  if (window.EventSource) {

    // 根据环境的不同,变更url

    const url = "http://139.155.59.51:48080";

    const curMessage = "";

    eventSource = new EventSource(`${url}/see_test`, { msg: curMessage });

    eventSource.onmessage = (e) => {

      const message = JSON.parse(e.data);

      //messages.push(message);

      console.log("已接受到消息:", e.data);

    };

    eventSource.onerror = (event) => {

      that.eventSource.close();

    };

    //处理服务器响应报文中的自定义事件

    eventSource.addEventListener("close", function (e) {

      that.eventSource.close();

    });

  } else {

    console.log("你的浏览器不支持SSE~");

  }

};

// await  post方式

const createSSClientPost = (callback = null) => {

  fetchEventSource("http://139.155.59.51:48080/sse_test", {

    method: "POST",

    headers: {

      "Content-Type": "text/event-stream",

    },

    openWhenHidden: true,

    body: JSON.stringify({

      // 后端要的数据

      prompt: "",

      history: [],

      max_token: 2048,

      temperature: 0,

      top_p: 0.9,

    }),

    async onmessage(msg) {

      const { data } = msg;

      if (data && JSON.parse(data)) {

        if (callback) {

          callback(data);

        }

      }

    },

    onerror(err) {

      throw err;

    },

  });

};

export { createSSClient };

vue中调用方式

import { createSSClient } from "./js/httpsseClient.js";

const createSSClientOper = () => {

  sseClent.reciveData = "";

  createSSClient((msg) => {

    const result = JSON.parse(msg);

    const contentMsg = result.message; // 返回的数据赋值到页面

    sseClent.reciveData = `${sseClent.reciveData}<br/> ${contentMsg}`;

    const content = document.getElementById("content");

    // 页面被文字铺满后实现滚动效果

    content.scrollTop = content.scrollHeight;

  });

};

相关文章

  • 【SpringBoot WEB 系列】SSE 服务器发送事件详解

    【SpringBoot WEB系列】SSE 服务器发送事件详解 SSE 全称Server Sent Event,直...

  • 使用nodejs实现web服务器与客户端的交互

    使用nodejs实现web服务器与客户端的交互 使用nodejs实现web服务器与客户端的交互 1.实验目的: 使...

  • 通过实例了解Socket TCP通信

    案例效果 服务端实现 客户端实现

  • HTTP学习笔记

    Web 页面的实现 Web 基于 HTTP 协议通信 客户端(Client)的 Web 浏览器从 Web 服务器端...

  • Web端通信技术

    Web端通信技术 归纳到目前为止的Web端原生通信技术,包括:Ajax、Web Sockets、SSE(服务器发送...

  • 4.Feign

    Feign是一个声明式的Web服务客户端。它使Web服务客户端更容易实现。声明一个接口并且加入注解来使用Feign...

  • Servlet与Tomcat

    概念 Java Web,是基于Java语言实现web服务的技术总和。介于现在Java在web客户端应用的比较少,我...

  • 【管子先生的Node之旅·18】一款基于HTTP协议的百度搜素程

    效果图 需求分期 服务端输入搜索内容,服务端实现搜索结果返回客户端 服务端将该搜索结果打印出来 程序实现 服务端 客户端

  • WebSocket协议

    WebSocket让我们可以在客户端和web服务端之间实现实时通信,不需要客户端发起请求,服务端就可以直接向客户端...

  • Web基础

    概述 Web主要由Web服务器和Web客户端组成。Web客户端(浏览器)通过Http协议向Web服务器发送请求,W...

网友评论

      本文标题:web客户端对接sse服务,实现打字效果

      本文链接:https://www.haomeiwen.com/subject/pxrzodtx.html