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

湛江有帮公司做网站网站开发工程师基础

湛江有帮公司做网站,网站开发工程师基础,风向 网站,怎么做国内网站吗前言 此前已经编写了一版后端的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.yayakq.cn/news/57504/

相关文章:

  • 包年seo和整站优化我想建立个网站数据怎么办
  • wordpress 淘宝客网站重庆网站设计公司网站制作
  • 让路由器做网站服务器提升网站流量该怎么做
  • 领动云建站app用什么制作软件
  • 推广qq群的网站机构网站源码
  • 博客网站首页设计高端网站建设论坛
  • 长沙做网站要多少钱太原适合网站设计地址
  • 国外专门做图像增强的网站做网站域名的成本
  • dw网站设计作品深圳西乡房价多少一平方
  • 网站百度搜索不到自己想申请一个公司
  • 织梦装修设计网站模板如何做局域网网站建设
  • 好的网站开发自学网站icp备案查询工信部
  • 积极参与网站信息建设工作昆明网站制作方案
  • 汕头网站专业制作网站优化公司大家好
  • 济南阿里科技网站建设有限公司重庆电力建设公司网站
  • 网站建设与开发开题报告最新款淘宝客源码整网站程序模板+后台带自动采集商品功能带文章
  • 如何苗木网站建设公众号开发 网站开发
  • 门户网站建设服务报价前端开发培训机构推荐无锡
  • 小而美企业网站建设河南中英网站建设
  • 深圳网站制作哪家好外贸电商
  • 凡科建站做的网站有什么短板大连做网站
  • 重庆建设厅的网站首页信息公开网站建设
  • 苏州新区建网站汽车贸易网站建设方案
  • 专业3合1网站建设电话网站建设在线建站
  • 在线做ppt模板下载网站有哪些如何制作网页二维码
  • 站长统计ios深圳宝安高端网站建设报价
  • 做企业网站的长沙最好网站建设
  • 深圳南山网站开发网站目录在哪里
  • 国外做兼职的网站如何给网站做第三方流量监测
  • 网站建设所学内容网站定制的公司