js和java交互websocket实现实时聊天

这篇具有很好参考价值的文章主要介绍了js和java交互websocket实现实时聊天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.运用场景(实现效果):

 2.代码及其讲解:

js配置:

(1)时间判断函数:

(2)建立ws连接:

结束!


1.运用场景(实现效果):

        前端运用原生js来与后端提供的ws进行交互,实现在线实时聊天,离线储存数据方便读取聊天记录的效果,效果图如下:

js在线聊天,周记,项目实战,websocket,网络协议,网络文章来源地址https://www.toymoban.com/news/detail-519189.html

 2.代码及其讲解:

js配置:

(1)时间判断函数:

function getTime() {
  var result = 0;
  var time = new Date();
  var h = time.getHours();
  h = h < 10 ? '0' + h : h;
  var m = time.getMinutes();
  m = m < 10 ? '0' + m : m;
  var s = time.getSeconds();
  s = s < 10 ? '0' + s : s;
  var year = time.getFullYear();
  var month = time.getMonth() + 1;
  month = month < 10 ? '0' + month : month;
  var dates = time.getDate();
  var result = year + '-' + month + '-' + dates + ' ' + h + ':' + m + ':' + s;
  return result;
}//获取当前时间
function getprTime() {
  let chattime = document.getElementsByClassName('chattime');
  chattime = chattime[chattime.length - 1].innerHTML;
  return chattime
}//获取的最后一个时间框的时间
function getfirstTime() {
  let chattime = document.getElementsByClassName('chattime');
  chattime = chattime[0].innerHTML;
  return chattime
}//获取的最后第一个时间框的时间
function recontrasttime(time, nowtime) {
  let data = new Date(time.replace(/-/g, "/"));
  let t1 = new Date(nowtime.replace(/-/g, "/"));
  let times = t1.getTime() - data.getTime();
  let days = parseInt(times / (24 * 1000 * 3600));
  if (days > 0) {
    return false;
  }
  let leave = times % (24 * 3600 * 1000);
  let h = parseInt(leave / (3600 * 1000));
  if (h > 0) {
    return false;
  }
  let h_leave = leave % (3600 * 1000);
  let min = parseInt(h_leave / (60 * 1000));

  if (min == 1 || min == 0) {
    return true;
  } else {
    return false;
  }
}//比较以前和现在两者的时间,来判断是否添加时间框

(2)建立ws连接:

var websocket = null;
var creatws= function (userid) {
  if ('WebSocket' in window) {
    //用于创建WebSocket对象,webSocketTest对应的是java类的注解值
    websocket = new WebSocket(`ws://152.136.99.236:8080/websocket/${userid}`);
  } else {
    hintFn("wrong","当前浏览器不支持")
  }
  //连接发生错误的时候回调方法;
  websocket.onerror = function () {
    hintFn("warning","连接错误")
    // alert("连接错误");
  }
  //连接成功时建立回调方法
  websocket.onopen = function () {
    //WebSocket已连接上,使用send()方法发送数据
    hintFn("success","连接成功")
    // alert("连接成功");
  };
  //  收到消息的回调方法
  websocket.onmessage = function (msg) {
    let data = JSON.parse(msg.data)
    console.log(msg.data);
    console.log(data);
    if (data.users != undefined) {
      for (let i of data.users) {
        if (i.userId == toid) {
          useronline[0].style.display = 'block'
          useronline[1].style.display = 'none'
        }
      }
      return
    } else {
      if (!recontrasttime(getprTime(), getTime())) {
        messagebody.innerHTML += `
        <div class="amessage">
          <div class="chattimebox"><span class="chattime">${getTime()}</span></div>
          <div class="chat otherchat">
              <img src="${userimg}" alt="">
              <div class="chattext">${data.text}</div>
          </div>
        </div>
    `
      } else {
        messagebody.innerHTML += `
        <div class="amessage">
          <div class="chat otherchat">
              <img src="${userimg}" alt="">
              <div class="chattext">${data.text}</div>
          </div>
        </div>
    `
      }//渲染数据
      if(nowpage==1){
        messagebody.scrollTop = messagebody.scrollHeight;
      }
    }
  };
  //连接关闭的回调方法
  websocket.onclose = function () {
    closed();
    isFinite('warning',"连接已关闭")
    // alert("关闭成功");
  };
  function closed() {
    websocket.close();
    sFinite('warning',"连接已关闭")
    // alert("点击关闭");
  }
  sendchat.onclick=function(){
    if(isnull(judgeStrs(chattext.value))){
      hintFn('warning', "请输入你要输入的内容")
      return
    }
    let newob = {
      to: toid,
      from: fromid,
      text: judgeStrs(chattext.value),
    }
    if (!recontrasttime(getprTime(), getTime())) {
      messagebody.innerHTML += `
      <div class="amessage">
      <div class="chattimebox"><span class="chattime">${getTime()}</span></div>
      <div class="chat mychat">
      <img src="${myimg}" alt="">
      <div class="chattext">${chattext.value}</div>
        </div>
        </div>
        `
      } else {
        messagebody.innerHTML += `
        <div class="amessage">
        <div class="chat mychat">
        <img src="${myimg}" alt="">
        <div class="chattext">${chattext.value}</div>
        </div>
        </div>
        `
      }
      websocket.send(JSON.stringify(newob)); //给后台发送数据
    messagebody.scrollTop = messagebody.scrollHeight;
    chattext.value=``
  }

结束!

到了这里,关于js和java交互websocket实现实时聊天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Springboot+WebSocket+Netty实现在线聊天、群聊系统

    此文主要实现在好友添加、建群、聊天对话、群聊功能,使用Java作为后端语言进行支持,界面友好,开发简单。 2.1、下载安装IntelliJ IDEA(后端语言开发工具),Mysql数据库,微信Web开发者工具。 1.创建maven project 先创建一个名为SpringBootDemo的项目,选择【New Project】 然后在弹出

    2024年02月14日
    浏览(33)
  • SpringBoot+Netty+Vue+Websocket实现在线推送/聊天系统

    ok,那么今天的话也是带来这个非常常用的一个技术,那就是咱们完成nutty的一个应用,今天的话,我会介绍地很详细,这样的话,拿到这个博文的代码就基本上可以按照自己的想法去构建自己的一个在线应用了。比如聊天,在线消息推送之类的。其实一开始我原来的想法做在

    2024年02月03日
    浏览(32)
  • 基于 SpringBoot+WebSocket 无DB实现在线聊天室(附源码)

    0.1 样例展示 0.2 源码地址 GitHub:https://github.com/ShiJieCloud/web-chat Gitee:https://gitee.com/suitbaby/web-chat GitCode:I’m Jie / web-chat · GitCode 1.1 HTTP 常用的 HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出

    2024年02月05日
    浏览(33)
  • 微信小程序 WebSocket 通信 —— 在线聊天

             * 源码已经上传到资源处,需要的话点击跳转下载 |  源码下载         在Node栏目就讲到了Socket通信的内容,使用Node实现Socke通信,还使用两个流行的WebSocket 库,ws 和 socket.io,在小程序中的WebSocket接口和HTML5的WebSocket基本相同,可以实现浏览器与服务器之间的

    2024年02月01日
    浏览(36)
  • 基于WebSocket的在线文字聊天室

    与Ajax不同,WebSocket可以使服务端主动向客户发送响应,本案例就是基于WebSocket的一个在线聊天室,不过功能比较简单,只能满足文字交流。演示如下。 案例学习于b站up主,链接 。这位up主讲的非常清楚,值得去学习。本文属于记录自我学习过程的文章。 项目目录下app.js 项

    2024年02月13日
    浏览(38)
  • 巧妙利用java实现在线聊天系统教程方法

    一、搭建服务器端 a)、创建ServerSocket对象绑定监听端口。 b)、通过accept()方法监听客户端的请求。 c)、建立连接后,通过输入输出流读取客户端发送的请求信息。 d)、通过输出流向客户端发送请求信息。 e)、关闭相关资源。 二、搭建客户器端 a)、创建Socket对象,指明需要连接

    2024年02月08日
    浏览(79)
  • 在线聊天室(Vue+Springboot+WebSocket)

    实现了一个简单的在线聊天室的前后端。前端用Vue实现,后端用Springboot实现。         在线聊天室的功能包括创建用户和显示在线用户列表、发送消息和显示消息列表、用户和消息列表实时更新这几点。以下是整体功能的活动图: 用户身份         进入聊天室的用户需

    2024年01月15日
    浏览(35)
  • 基于SpringBoot+Vue+WebSocket的在线聊天室

    WebSocket 是一种在 Web 应用程序中实现双向通信的协议。它提供了一种持久连接,允许客户端和服务器之间进行实时数据传输,而无需进行频繁的请求和响应。 相对于传统的 HTTP 请求-响应模式,WebSocket 在客户端和服务器之间建立起一条长久的双向通信通道。这意味着服务器可

    2024年01月16日
    浏览(52)
  • Gin+WebSocket实战——在线聊天室WebSocketDemo详细使用教程

    Github:https://github.com/palp1tate/WebsocketDemo 欢迎star!😎 利用 Gin + WebSocket 实现的在线聊天室 Demo 项目,支持加入/离开聊天室广播、给其他用户发送消息等。 进入项目根目录,执行命令 go run . 命令,结果如下: 可以看到们的 HTTP 服务已经启动成功并运行在了 8080 端口上。 接下

    2024年04月26日
    浏览(26)
  • 间接且稳定地使用 Chat GPT 3.5——基于 SpringBoot 可运行于服务器,提供实时在线的 AI 聊天支持

    最近它的出现,给我们写程序的人带来了许多新思路,比如: 用它写一些基础的代码 用它帮我们整理思路、寻找灵感 用它做翻译 用它做总结 还有许许多多新的用法······ 首先,是本人在使用它官方网页时,偶尔响应缓慢、多次需要重新登录的操作,有点影响实际体验,

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包