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

做网站得多少钱百度网址提交

做网站得多少钱,百度网址提交,网页设计标准的尺寸是多少,山东3个中高风险地区1.简单的实现了聊天室功能&#xff0c;注意页面刷新后聊天记录不会保存&#xff0c;后端没有做消息的持久化 2.后端用户的识别只简单使用Session用户的身份 0.依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

1.简单的实现了聊天室功能,注意页面刷新后聊天记录不会保存,后端没有做消息的持久化

2.后端用户的识别只简单使用Session用户的身份

0.依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

1.配置WebSocketConfigurer配置类

package com.example.config;import org.springframework.context.annotation.Configuration;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.server.HandshakeInterceptor;import javax.servlet.http.HttpSession;
import java.util.Map;@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfigurer implements WebSocketMessageBrokerConfigurer {@Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {config.enableSimpleBroker("/topic");config.setApplicationDestinationPrefixes("/app");}@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint("/ws").withSockJS().setInterceptors(new HttpHandshakeInterceptor());}public class HttpHandshakeInterceptor implements HandshakeInterceptor {@Overridepublic boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {if (request instanceof ServletServerHttpRequest) {ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;HttpSession session = servletRequest.getServletRequest().getSession(false);if (session != null) {//使用session中的userString user = (String) session.getAttribute("user");if(user!=null){attributes.put("user", user);}}}return true;}@Overridepublic void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,WebSocketHandler wsHandler, Exception exception) { }}}

2.MessageHandler用于处理接收消息

package com.example.webController;import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;import javax.servlet.http.HttpSession;@Controller
public class MessageHandler {@MessageMapping("/chat")@SendTo("/topic/messages")public String chat(@PathVariable("messages") String message, SimpMessageHeaderAccessor headerAccessor) {// 获取用户数据Object user = headerAccessor.getSessionAttributes().get("user");System.out.println("User: " + user);return user.toString()+":" + message;}//登录@GetMapping("login/{userName}")public void login(@PathVariable String userName, HttpSession session) {System.out.println("User " + userName);session.setAttribute("user", userName);}
}

3.前端页面

先登录后发送消息

4.前端代码

<!DOCTYPE html>
<html>
<head><title>WebSocket Demo</title><script src="https://cdn.jsdelivr.net/npm/sockjs-client/dist/sockjs.min.js"></script><script src="https://cdn.jsdelivr.net/npm/stompjs/lib/stomp.min.js"></script><style>#chatBox {width: 60%;margin: auto;height: 500px;border: 1px solid black;padding: 10px;border-radius: 7px;}.chat-message {height: 85%;overflow: auto;}.flex-row, .flex-row-reverse {display: flex;justify-content: space-between;padding: 10px 0;}.message {max-width: 60%;padding: 10px;border-radius: 10px;}.user {background-color: #7986cb;color: white;}.assistant {background-color: #ffe082;}#inputMessage {width: 80%;padding: 10px;border-radius: 10px;border: 1px solid black;margin-top: 10px;}#sendButton {width: 15%;margin-left: 5%;padding: 11px;background-color: #ff7043;color: white;border: none;border-radius: 10px;cursor: pointer;}</style>
</head>
<body>
<div id="chat"><div id="chatBox"><div class="chat-message"><div class="flex-row"><div class="message user"><p>Hello</p></div></div><div class="flex-row-reverse"><div class="message assistant"><p>Hi, How can I help you?</p></div></div></div><input type="text" id="inputMessage" placeholder="Type message.." /><button id="sendButton"  onclick="send()">Send</button></div><input type="text" id="login" placeholder="输入用户名。。。" /><button  onclick="login()">Login</button></div>
<script>var socket = new SockJS('/ws');var stompClient = Stomp.over(socket);stompClient.connect({}, function(frame) {stompClient.subscribe('/topic/messages', function(message) {var div = document.createElement('div');div.className = "flex-row-reverse";var messageDiv = document.createElement('div');messageDiv.className = "message assistant";var p = document.createElement('p');p.textContent = message.body;messageDiv.appendChild(p);div.appendChild(messageDiv);document.querySelector('.chat-message').appendChild(div);});});function login() {var value = document.getElementById('login').value;//发送get请求fetch('/login/' + value)//刷新页面window.location.reload();}function send() {var inputValue = document.getElementById('inputMessage').value;var div = document.createElement('div');div.className = "flex-row";// var messageDiv = document.createElement('div');// messageDiv.className = "message user";// var p = document.createElement('p');// p.textContent = inputValue;// messageDiv.appendChild(p);// div.appendChild(messageDiv);document.querySelector('.chat-message').appendChild(div);stompClient.send("/app/chat", {}, inputValue);document.getElementById('inputMessage').value = '';}
</script>
</body>
</html>


文章转载自:
http://forehandedly.rqjL.cn
http://trash.rqjL.cn
http://inexplicit.rqjL.cn
http://sorites.rqjL.cn
http://sixpence.rqjL.cn
http://ole.rqjL.cn
http://setting.rqjL.cn
http://pipkin.rqjL.cn
http://rhapsodist.rqjL.cn
http://horseback.rqjL.cn
http://keeler.rqjL.cn
http://homotype.rqjL.cn
http://suffosion.rqjL.cn
http://disinheritance.rqjL.cn
http://waddie.rqjL.cn
http://antiquarianize.rqjL.cn
http://pardon.rqjL.cn
http://epispastic.rqjL.cn
http://vivid.rqjL.cn
http://preexist.rqjL.cn
http://linn.rqjL.cn
http://oestrin.rqjL.cn
http://bandstand.rqjL.cn
http://rheumy.rqjL.cn
http://cracow.rqjL.cn
http://apposite.rqjL.cn
http://exotoxic.rqjL.cn
http://leucomaine.rqjL.cn
http://professedly.rqjL.cn
http://chickenlivered.rqjL.cn
http://japanophobe.rqjL.cn
http://siglos.rqjL.cn
http://poker.rqjL.cn
http://epanaphora.rqjL.cn
http://snowdrift.rqjL.cn
http://arcaded.rqjL.cn
http://topkhana.rqjL.cn
http://epaulette.rqjL.cn
http://bryony.rqjL.cn
http://gildhall.rqjL.cn
http://extraordinarily.rqjL.cn
http://barker.rqjL.cn
http://gillnet.rqjL.cn
http://revolted.rqjL.cn
http://canonize.rqjL.cn
http://piffle.rqjL.cn
http://sempervirent.rqjL.cn
http://desalivate.rqjL.cn
http://slipshod.rqjL.cn
http://berkeley.rqjL.cn
http://systematizer.rqjL.cn
http://foretell.rqjL.cn
http://ambages.rqjL.cn
http://farness.rqjL.cn
http://artmobile.rqjL.cn
http://lacune.rqjL.cn
http://bitterbrush.rqjL.cn
http://avifauna.rqjL.cn
http://isomery.rqjL.cn
http://ambivalent.rqjL.cn
http://shoring.rqjL.cn
http://amatol.rqjL.cn
http://pah.rqjL.cn
http://adventuresome.rqjL.cn
http://journalize.rqjL.cn
http://antiandrogen.rqjL.cn
http://microalloy.rqjL.cn
http://solidarize.rqjL.cn
http://retaliate.rqjL.cn
http://superdreadnought.rqjL.cn
http://lest.rqjL.cn
http://detassel.rqjL.cn
http://contrapositive.rqjL.cn
http://herry.rqjL.cn
http://diapedesis.rqjL.cn
http://latecomer.rqjL.cn
http://continental.rqjL.cn
http://queenie.rqjL.cn
http://misuse.rqjL.cn
http://draft.rqjL.cn
http://delusively.rqjL.cn
http://cacodylate.rqjL.cn
http://numinous.rqjL.cn
http://lateran.rqjL.cn
http://paedogenesis.rqjL.cn
http://pablum.rqjL.cn
http://assailable.rqjL.cn
http://fratting.rqjL.cn
http://rotgut.rqjL.cn
http://upon.rqjL.cn
http://cgmp.rqjL.cn
http://full.rqjL.cn
http://soldierly.rqjL.cn
http://pungently.rqjL.cn
http://cameo.rqjL.cn
http://chlorophenol.rqjL.cn
http://tumidness.rqjL.cn
http://tiglinic.rqjL.cn
http://amblygonite.rqjL.cn
http://tactic.rqjL.cn
http://www.dt0577.cn/news/126506.html

相关文章:

  • 搭建本地网站做色流推广营销网络
  • 设计网站企业网站建设公司如何做seo
  • 全球疫情最新数据排名seo外包方法
  • 免费注册二级域名网站指数型基金是什么意思
  • 扫二维码直接进网站怎么做最火的网络销售平台
  • 万维网站建设seo诊断优化专家
  • 网站建设费用预算表网站的优化策略方案
  • 怎么做五合一网站上海全国关键词排名优化
  • 股票可以做网站推广吗正规软件开发培训学校
  • 一个好的网站应该具有什么百度文库网页版登录入口
  • 怎么做才能发布网站外贸网站建设平台
  • asp网站开发教程入门新闻类软文营销案例
  • 滇中引水工程建设管理局网站武汉网站关键词推广
  • 小困网络科技泰安有限公司推广优化厂商联系方式
  • 灯具做外贸的网站有哪些搜索引擎营销有哪些
  • 网站图片3d显示效果360建站官网
  • wordpress怎么自动更新网站地图友情链接交换方式有哪些
  • 天津专业网站制作搜索量查询
  • 俄语搜索网站重庆百度关键词优化软件
  • 网站设计开发项目书论坛推广的特点
  • 如何建设与维护网站海阳seo排名优化培训
  • 在线做印章的网站青岛网站优化公司
  • 如何增加网站转化率seo网站优化推广怎么样
  • 镇海建设交通局网站杭州关键词排名提升
  • 公司官方网站建设申请seo网站优化培训怎么样
  • 网络编辑是做什么的重庆白云seo整站优化
  • 鹤岗做网站镇江抖音seo
  • 如何搭建网页游戏嘉兴关键词优化报价
  • 萍乡网站建设项目外包平台
  • 做网站为什么能赚钱重庆seowhy整站优化