当前位置: 首页 > news >正文

html5响应式网站建设平台天堂tv在线观看

html5响应式网站建设平台,天堂tv在线观看,网站制作详细流程,科技小报前言 此前已经编写了一版后端的im,此次就用其作为服务端,可查看参考资料1 代码 使用WebStorm创建React项目 安装依赖包 PS C:\learn-demo\front\chatroom> npm installadded 183 packages, and audited 184 packages in 16s43 packages are looki…

前言

此前已经编写了一版后端的im,此次就用其作为服务端,可查看参考资料1

代码

使用WebStorm创建React项目

安装依赖包

PS C:\learn-demo\front\chatroom> npm installadded 183 packages, and audited 184 packages in 16s43 packages are looking for fundingrun `npm fund` for detailsfound 0 vulnerabilities

创建ChatRoom.tsx

import React, { useState, ChangeEvent } from 'react';const ChatRoom: React.FC = () => {const [message, setMessage] = useState('');const [messages, setMessages] = useState<string[]>([]);const [socket, setSocket] = useState<WebSocket | null>(null);const [userName, setUserName] = useState('');const handleSendMessage = () => {if (socket && message) {socket.send(message);setMessage('');}};const handleConnected = () => {if (userName) {setUserName(userName);createWebSocket(userName);}};const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {setMessage(event.target.value);};const handleInputName = (event: ChangeEvent<HTMLInputElement>) => {setUserName(event.target.value);};const createWebSocket = (userName: string) => {setMessages(prevMessages => [...prevMessages, `welcome 【${userName}】`])if (userName){setUserName(userName);}else {return;}//关闭已有websocket连接if (socket){socket.close()}const newSocket = new WebSocket(`ws://localhost:18080/ws?userName=${userName}`);newSocket.onopen = () => {console.log('Connected to the WebSocket server');};newSocket.onmessage = (event: MessageEvent) => {setMessages(prevMessages => [...prevMessages, event.data]);};newSocket.onclose = () => {console.log('Disconnected from the WebSocket server');};setSocket(newSocket);}return (<div><ul>{messages.map((msg, index) => (<li key={index}>{msg}</li>))}</ul><inputtype="text"value={userName}onChange={handleInputName}/><button onClick={handleConnected}>Connected</button><br/><inputtype="text"value={message}onChange={handleInputChange}/><button onClick={handleSendMessage}>Send</button></div>);
};export default ChatRoom;

修改main.tsx

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import ChatRoom from "./component/ChatRoom.tsx";createRoot(document.getElementById('root')!).render(<StrictMode><ChatRoom /></StrictMode>,
)

测试

  • 运行项目,打开三个http://localhost:5173/的页面

分别以不同用户名(test1、test2、test3)连接websocket,步骤是第一行输入框输入用户名,然后点击Connected按钮

  • test1发送全体消息

第二行输入框输入消息,点击Send按钮

test2、test3均收到消息

  • test1发送消息给test2

test2收到消息

test3未收到消息

调整后端代码

上述消息分不清到底是谁发给用户的,调整下im服务的代码

SendExecutorFactory

public void onMessage(String sendUserName, String message) {IBaseSendExecutor iBaseSendExecutor = Optional.ofNullable(executorConfiguration.getBaseSendExecutorMap().get(webSocketProperties.getCommunicationType())).orElse(new DefaultSendExecutor());message = String.format("【%s】: %s", sendUserName, message);//包含@发给指定人,否则发给全部人if (StringUtils.contains(message, webSocketProperties.getReceiverSeparator())) {iBaseSendExecutor.sendToUser(sendUserName, message);} else {iBaseSendExecutor.sendToAll(sendUserName, message);}
}

重新启动服务端,发送消息

页面上重新连接,test1发送全体消息

test2、test3均收到test1的消息

参考资料

[1].im后端代码

[2].chatroom前端项目

http://www.mnyf.cn/news/41148.html

相关文章:

  • 做白日梦的哪个网站游戏推广拉人渠道
  • 微信公众平台网站建设新闻报道网络营销和市场营销的区别
  • 牡丹江百姓信息网seo销售是做什么的
  • 企业高端网站建设需要注意哪些事项东莞网站制作推广公司
  • php网站链接支付宝菏泽百度推广公司电话
  • 高端的环保行业网站开发seo关键词怎么填
  • 招标网怎么投标seo首页关键词优化
  • 做网站推广有用不今天发生的重大新闻
  • 新闻类网站怎么做网络教学平台
  • 哪里有专门做网站的海外市场推广做什么的
  • app网站下载免费的搜索引擎优化
  • 云南省建设厅官方网站seo1现在怎么看不了
  • 网站模板分什么类型新闻式软文范例
  • 手机网站视频无法播放是怎么回事广州网站推广软件
  • 江西建设网站免费奖励自己的网站
  • 房地产网站怎么推广怎么做好网络营销推广
  • 招商网站建设公司营销案例网站
  • 如何做网站流量分析长沙百度快速排名优化
  • wordpress新闻抓取插件seo1视频发布会
  • 西宁做网站多少钱泰州百度公司代理商
  • 如何注册一个免费网站十大免费网站推广平台有哪些
  • 网站开发项目小组成员职责免费网页空间到哪申请
  • 包头怎样做网站个人网站首页设计
  • 不用js做网站最好用的免费建站平台
  • 做企业网站的研究现状seo 是什么
  • 网站推广策划信息发布
  • 分析网站建设前期的seo准备工作网站在线客服系统 免费
  • 网站后台上图片后网页显示不正确网络推广软文怎么写
  • app制作平台大全短视频入口seo
  • 外包公司做网站的流程网络运营师资格证