websocket 聊天室,推送等服務

2022-07-15 10:24:09 字數 2597 閱讀 2231

websocket 是一種協議,和http 配合實用

http的特點是 鏈結後 客戶端向服務端請求,服務端相應後斷開鏈結,

因為http 有這個特點 所以 服務端不好主動向客戶端發起請求

雖然有長連線的方法可以解決這個問題,但是效能開銷太大,解決方案並不很好

所以就誕生了websocket

客戶端與服務端鏈結以後,雙方都可以主動發起請求,並在資料互動之後不會有任何一方自動斷開鏈結

除非執行了斷開鏈結的命令(客戶端是關閉瀏覽器,或者一些關閉命令)

博主用的是django,  dwebsocket

urls.py

from django.conf.urls import

urlfrom django.contrib import

admin

views

urlpatterns =[

url(r

'^admin/

', admin.site.urls),

url(r

'^index/

', views.index),

url(r

'^index2/

', views.index2),

url(r

'^echo$

', views.echo),

url(r

'^echo_once/

', views.echo_once),

]

路由views.py

判斷是不是websocket連線

try:#

如果是普通的http方法

#傳送訊息到客戶端

finally

: peo_l.remove(request.websocket)

lock.release()

檢視templates

"text

" id="

message

" value="

hello, world!

"/>

"button

" id="

connect_websocket

">連線 websocket

"button

" id="

send_message

">傳送 message

"button

" id="

close_websocket

">關閉 websocket

"messagecontainer

">

模板demo的效果是 開啟2個以上 瀏覽器

從http://ip:port/index/ 中進去 

連線websocket後    傳送message

假如 有 視窗a 和視窗b

都連線了 websocket後  

視窗a的input框  輸入  "我是視窗a"

這時 視窗a 和視窗b 同時 顯示   "我是視窗a"

這就是 最終想要的效果 

但是如果 再開啟視窗c   沒有連線socket 是  不會受到任何資訊的

WebSocket聊天室的實現

資源 ratchet websockets for php web socket chat online chat based on web sockets and ratchet php 編輯 對應的vhost配置檔案,加入如下配置 upstream backend server websocke...

WebSocket實現簡單聊天室

看了之前的文章,想必大家對websocket的原理已經有了乙個深入的理解,這一篇文章我們來看一下具體該如何去使用它。這裡,我用nodejs websocket實現乙個簡單的多人聊天室,從這個小案例中來學會使用websocket。nodejs websocket用法參見官方api 伺服器端 安裝引入n...

使用websocket實現聊天室功能

websocket 是 html5 開始提供的一種在單個 tcp 連線上進行全雙工通訊的協議。websocket 使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在 websocket api 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並...