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

html5响应式网站建设平台公众号推广方案

html5响应式网站建设平台,公众号推广方案,项目加盟,做网站都有什么项目前言 此前已经编写了一版后端的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.yidumall.com/news/34616.html

相关文章:

  • 武汉地区做网站中国软文网
  • 企业网站静态模板培训seo
  • 有什么网站可以做电子版邀请函凡科建站怎么建网站
  • 社区类网站建设的例子百度人工服务热线电话
  • 金融投资网站模板上海百度推广代理商
  • 网站网页制作企业临沂百度公司地址
  • 做封面下载网站做网站优化推广
  • 门户网站制度建设优化站点
  • 网站虚拟空间多少钱seo搜索引擎优化工作内容
  • 网站LOGO透明底色PNG格式怎么做的精准客源引流平台
  • 企业网站管理系统带授权上海网络推广招聘
  • 涿州网站制作整站快速排名优化
  • 网站 添加备案号百度seo通科
  • 无锡网站建设技术百度首页排名优化价格
  • 公众号网站怎么做浑江区关键词seo排名优化
  • 万链网站做的怎么样seo公司 引擎
  • 黄骅市网站建设公司互联网营销的优势
  • 公司名字大全免费取名网页优化seo广州
  • 京东网站建设的详细策划百度网盘网页版入口
  • 一个网站的构建上海网站建设优化
  • 重庆彭水网站建设互联网推广运营
  • 阳山做网站怎么优化网站性能
  • wordpress 桌面通知seo外链收录
  • 广州网站建设比较百度获客
  • 甘肃省建设厅官方网站张睿seo常见优化技术
  • 做最最优秀的视频网站有哪些开发软件app需要多少钱
  • 网站开发工作长沙百度网站快速排名
  • 武汉网站建设与服务goole官网
  • 网站 如何做 中英文切换seo技巧分享
  • 泰兴做网站公司西安seo关键字优化