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

旅游门户网站模板下载做策划网站推广怎么写简历

旅游门户网站模板下载,做策划网站推广怎么写简历,《网站开发实践》 实训报告,2017网站开发合同下载实时聊天室#xff1a;学习WebSocket并发处理 目标概述 在本项目中#xff0c;我们将创建一个实时聊天室#xff0c;使用Go语言和WebSocket来处理并发消息交流。这将帮助你深入理解WebSocket协议的工作原理以及如何在Go中实现并发处理。 1. 项目需求 功能需求 用户可以…实时聊天室学习WebSocket并发处理 目标概述 在本项目中我们将创建一个实时聊天室使用Go语言和WebSocket来处理并发消息交流。这将帮助你深入理解WebSocket协议的工作原理以及如何在Go中实现并发处理。 1. 项目需求 功能需求 用户可以通过浏览器连接到聊天室。用户能发送和接收消息。支持多个用户同时在线聊天。提供简单的用户界面展示消息。 技术需求 Go语言: 用于后端服务器开发。Gorilla WebSocket: Go语言实现的WebSocket库。HTML/CSS/JavaScript: 用于前端界面开发。 2. 学习WebSocket 2.1 WebSocket概述 WebSocket是一种协议允许在客户端和服务器之间建立持久性的全双工通信通道。它非常适合实时应用如聊天应用、实时通知等。 WebSocket的优点 全双工通信客户端和服务器可以随时互相发送数据。低延迟与HTTP相比WebSocket在数据传输时会有更低的延迟。节省资源WebSocket连接在建立后可以保持打开状态避免重复连接。 2.2 WebSocket协议工作流 WebSocket的建立过程如下 客户端发送HTTP请求升级连接至WebSocket。服务器确认并完成连接协议升级。完成后双方可以开始进行实时数据传输。 3. 项目结构 3.1 项目目录 chatroom/ ├── main.go ├── index.html └── styles.css3.2 各文件功能 main.go: 服务器的主逻辑。index.html: 客户端聊天界面。styles.css: 界面的样式定义。 4. 代码实现 4.1 main.go - 服务器端实现 下面是主要的Go代码实现包含WebSocket处理和并发支持 package mainimport (fmtnet/httpsyncgithub.com/gorilla/websocket )var upgrader websocket.Upgrader{CheckOrigin: func(r *http.Request) bool {return true}, }type Client struct {conn *websocket.Connsend chan []byte }type Hub struct {clients map[*Client]boolbroadcast chan []bytemutex sync.Mutex }var hub Hub{clients: make(map[*Client]bool),broadcast: make(chan []byte), }func (h *Hub) run() {for {msg : -h.broadcasth.mutex.Lock()for client : range h.clients {select {case client.send - msg:default:close(client.send)delete(h.clients, client)}}h.mutex.Unlock()} }func (c *Client) read() {defer func() {hub.mutex.Lock()delete(hub.clients, c)hub.mutex.Unlock()c.conn.Close()}()for {_, msg, err : c.conn.ReadMessage()if err ! nil {break}hub.broadcast - msg} }func (c *Client) write() {defer c.conn.Close()for msg : range c.send {if err : c.conn.WriteMessage(websocket.TextMessage, msg); err ! nil {break}} }func handleConnection(w http.ResponseWriter, r *http.Request) {conn, err : upgrader.Upgrade(w, r, nil)if err ! nil {fmt.Println(err)return}client : Client{conn: conn, send: make(chan []byte)}hub.mutex.Lock()hub.clients[client] truehub.mutex.Unlock()go client.write()client.read() }func main() {go hub.run()http.HandleFunc(/ws, handleConnection)http.Handle(/, http.FileServer(http.Dir(./)))fmt.Println(Server started at :8080)if err : http.ListenAndServe(:8080, nil); err ! nil {fmt.Println(Error while starting the server:, err)} }4.2 index.html - 客户端实现 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleChat Room/titlelink relstylesheet hrefstyles.css /head bodydiv idchat-containerdiv idmessages/divinput idmessage-input typetext placeholderType a message... autocompleteoff /button idsend-buttonSend/button/divscriptconst messages document.getElementById(messages);const input document.getElementById(message-input);const sendButton document.getElementById(send-button);const connection new WebSocket(ws:// window.location.host /ws);connection.onmessage function(event) {const messageElement document.createElement(div);messageElement.textContent event.data;messages.appendChild(messageElement);};sendButton.onclick function() {const message input.value;if (message) {connection.send(message);input.value ;}};/script /body /html4.3 styles.css - 样式定义 body {font-family: Arial, sans-serif; }#chat-container {width: 600px;margin: 0 auto;border: 1px solid #ccc;padding: 10px; }#messages {height: 400px;overflow-y: scroll;border: 1px solid #ccc;margin-bottom: 10px; }#message-input {width: 80%;padding: 10px; }#send-button {padding: 10px; }5. 代码运行流程图 ------------------- | Start Server | | (main.go) | ------------------|v ------------------- | Handle | | WebSocket |-------------------- | Connection | | ------------------ || |v | ------------------ | | Create Client | | ------------------ || |v | ------------------ | | Read Message | | ------------------ || |------------------------------|v---------------------| Broadcast Message |---------------------|v---------------------| Send Message to All |----------------------6. 运行项目 6.1 运行步骤 确保Go环境已经安装并且你的工作目录在chatroom。安装Gorilla WebSocket库 go get -u github.com/gorilla/websocket在项目目录下运行服务器 go run main.go在浏览器中访问 http://localhost:8080 来使用聊天室。 6.2 测试聊天室 你可以在多个浏览器窗口中打开同一地址发送消息以查看所有连接的用户是否可以实时收到消息。这将帮助你理解并发处理和WebSocket的使用。 7. 总结与扩展 7.1 项目总结 通过这个项目你学习了如何使用Go语言创建一个支持WebSocket的实时聊天室。了解了WebSocket的工作原理并掌握了Go中的并发处理方法为以后的项目开发打下了基础。 7.2 可能的扩展功能 用户身份验证支持用户注册和登录功能。消息历史记录将聊天记录存储到数据库。聊天室管理允许用户创建和管理多个聊天室。客户端样式优化提升用户界面的美观度和用户体验。 8. 参考资料 Go DocumentationGorilla WebSocketWebSocket Protocol 怎么样今天的内容还满意吗再次感谢观众老爷的观看关注GZH凡人的AI工具箱回复666送您价值199的AI大礼包。最后祝您早日实现财务自由还请给个赞谢谢
http://www.w-s-a.com/news/566013/

相关文章:

  • 建设隔离变压器移动网站wordpress动态导航
  • 平潭建设局网站中国免费素材网
  • 虚拟主机可以做视频视频网站吗做爰全过程免费的视频网站有声音
  • 专业做家电经销的网站网络管理系统有哪几部分组成
  • 自学网站编程网站名称需要注册吗
  • 网站后台管理系统怎么添加框安徽省工程建设协会网站
  • 雨花台网站建设wordpress找回
  • 四川哪家网站推广做的好网站开发人才需求
  • 什么网站可以找手工活做一站式服务平台官网
  • 做购物网站的步骤网站核心词如何做
  • 做品牌设计网站公司网站没做301怎么做301
  • 服务流程企业网站wordpress文章的使用
  • 网站开发组合淘宝网站开发选什么类目
  • 广东手机网站建设个人电脑做网站主机
  • 健身俱乐部网站开发文档建一个网站需要什么条件
  • 买的网站模板怎么做建设行政管理部门网站
  • 怎么让百度多收录网站关键词seo深圳
  • 陕西交通建设集团网站体检个人网站设计模板田田田田田田田田
  • ae模板网站推荐安徽建筑信息平台
  • 新网站建设代理商wordpress模板商店
  • 中国十大设计素材网站wordpress发布失败
  • 江西省建设监理网站网页制作与设计是什么
  • 在招聘网站做销售怎么样网址你懂我意思正能量不用下载ios
  • 高端企业网站定制公司企业网站2000元
  • 成都网站建设:河北省建设工程质量监督网站
  • 四川省建设厅官网信息查询平台北京seo关键词优化外包
  • 网站建设响应式是什么意思wordpress弹窗打开网页
  • 做美工需要参考的网站漳州做网站的公司
  • 用源码建设网站关于网站开发的自我评价
  • 网站设计师图片自助建站编辑器