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

做偏门网站阿里云最低服务器可以做几个网站

做偏门网站,阿里云最低服务器可以做几个网站,推广兼职,软件工程培训班出来好就业吗虽然网上的都是用sse实现将实时消息流不间断的推给前端#xff0c;但是sse也可以模拟websocket进行突发的消息通知#xff0c;而不是一直读取数据并返回数据。即服务端保存所有的连接对象#xff0c;前端管理界面发送正常的http请求#xff0c;在后端遍历所有的连接对象但是sse也可以模拟websocket进行突发的消息通知而不是一直读取数据并返回数据。即服务端保存所有的连接对象前端管理界面发送正常的http请求在后端遍历所有的连接对象将消息广播。就可以实现一种类似双向通讯的形式了。 代码参考了Server-side Events (SSE) : A deep dive into client-server architecture | Implementation in Golang在这基础上实现了房间机制房间ID由前端生成并传递鉴权机制请自行通过token中间件等形式实现。 package mainimport (fmtnet/httpgithub.com/gin-gonic/gin )// 房间号为keyclient数组为value var clients make(map[string][]chan string)// 广播房间内的所有用户 func broadcast(roomID string, data string) {for _, client : range clients[roomID] {client - data} } //配置跨域 func configCors() gin.HandlerFunc {return func(c *gin.Context) {method : c.Request.Methodc.Header(Access-Control-Allow-Origin, *)c.Header(Access-Control-Allow-Methods, POST, GET, OPTIONS, PUT, DELETE, UPDATE)c.Header(Access-Control-Allow-Headers, *)c.Header(Access-Control-Expose-Headers, Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type)c.Header(Access-Control-Allow-Credentials, true)//放行所有OPTIONS方法if method OPTIONS {c.AbortWithStatus(http.StatusNoContent)}// 处理请求c.Next()} }//前端初始化时连接该接口 func connect(c *gin.Context) {roomID : c.Param(id)// Set the response header to indicate SSE content typec.Header(Content-Type, text/event-stream)c.Header(Cache-Control, no-cache)c.Header(Connection, keep-alive)// Create a channel to send events to the clientprintln(Client connected)eventChan : make(chan string)if clients[roomID] nil {clients[roomID] []chan string{}}clients[roomID] append(clients[roomID], eventChan) // Add the client to the clients mapdefer func() {// 删除该房间的该用户按值删除数组元素for _, v : range clients[roomID] {if v ! eventChan {clients[roomID] append(clients[roomID], v)}}close(eventChan)}()// Listen for client close and remove the client from the listnotify : c.Writer.CloseNotify()go func() {-notifyfmt.Println(Client disconnected)}()// Continuously send data to the clientfor {data : -eventChanprintln(Sending data to client, data)fmt.Fprintf(c.Writer, data: %s\n\n, data)c.Writer.Flush()} }// 发送消息接口 func sendMsg(c *gin.Context) {// data : c.PostForm(data)roomID : c.Param(id)data : c.DefaultQuery(name, urlyy)// print data to consoleprintln(Data received from client :, data)broadcast(roomID, data)c.JSON(http.StatusOK, gin.H{message: Data sent to clients}) }func main() {router : gin.Default()router.Use(configCors())// SSE endpoint that the clients will be listening torouter.GET(/sse/:id, connect)// Handle POST requestrouter.GET(/send/:id, sendMsg)// Start the servererr : router.Run(:6666)if err ! nil {fmt.Println(err)} }前端代码 !DOCTYPE html html langenheadmeta charsetUTF-8titleSSE Client/title /headbodyh1SSE Client/h1div idsse-data/divscriptconst sseDataElement document.getElementById(sse-data);// Create an EventSource to listen to the /sse endpoint// 注意这里多加了一个路径属性就是房间ID// 测试时可以另建一个html文件将它的房间ID更改成不一样的const eventSource new EventSource(http://localhost:6666/sse/1);// Event listener for messages received from the servereventSource.onmessage function (event) {const data event.data;appendDataToDiv(data);};// Event listener for SSE errorseventSource.onerror function (event) {console.error(SSE Error:, event);};// Function to append data to the SSE data divfunction appendDataToDiv(data) {const p document.createElement(p);p.textContent data;sseDataElement.appendChild(p);}/script /body/html发送消息的接口 http://127.0.0.1:8587/send/1?name1234name不传则默认为urlyy。调用该接口会将消息1234发给1号房间的所有用户
http://www.hkea.cn/news/14407890/

相关文章:

  • 申请免费个人网站空间哪些网站做舆情分析
  • 网站建设开发服务费北京十大装饰公司排名有哪些
  • 多用户商城网站开发国内公司网站模板
  • 做五金的网站江西网站设计欣赏
  • 网站页眉设计河北建设工程招标协会网站
  • php响应式网站开发百度云仿什么值得买wordpress
  • 企业网站 php 下载给你一个网站你怎么做的
  • 备案不关闭网站怎么样网站索引量是什么意思
  • 保健品网站建设案例网站建设调研背景
  • cadisen卡迪森手表网站电脑机箱定制网站
  • 彩票网站怎么做的网站推广有哪些优势
  • 上海学校网站建设如何保持网站中的图片
  • 有什么做网站的国企最近新闻摘抄
  • 网站建设整改报告电商系统源码哪家好公司
  • 联赛网站建设不足关于申请网站建设
  • 网站建设开发服务费怎么做分录做招聘网站多少钱
  • 如何快速提升网站流量客户拒绝做网站的理由
  • seo营销型网站设计要点怎么创建网站论坛
  • 汽车用品网站规划动漫制作专业学什么课程
  • 开通网站申请书信阳电子商务网站建设
  • 淄博网站建设哪家好新版wordpress谷歌字体
  • 简述电子商务网站的建设nginx 搭建wordpress
  • 如何建设和优化网站东莞seo全网营销
  • vps里面设置了一下读取和写入网站无法显示了鞍山市建设工程安全生产监督管理站网站
  • 怎样做好手机网站建设济源建网站
  • 岳阳网站开发收费如何注册电商平台
  • 天津知名网站建设公司呼市网站制作招聘
  • 营销网站制作软件响应式网站怎样做
  • 西部数码网站模板试论述外贸网站建设应注意的问题
  • 网站搭建有免费的吗茂名网站建设维护