websocket 是一種協議,和http 配合實用
http的特點是 鏈結後 客戶端向服務端請求,服務端相應後斷開鏈結,
因為http 有這個特點 所以 服務端不好主動向客戶端發起請求
雖然有長連線的方法可以解決這個問題,但是效能開銷太大,解決方案並不很好
所以就誕生了websocket
客戶端與服務端鏈結以後,雙方都可以主動發起請求,並在資料互動之後不會有任何一方自動斷開鏈結
除非執行了斷開鏈結的命令(客戶端是關閉瀏覽器,或者一些關閉命令)
博主用的是django, dwebsocket
urls.py
from django.conf.urls import路由views.pyurlfrom 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),
]
判斷是不是websocket連線
try:#
如果是普通的http方法
#傳送訊息到客戶端
finally
: peo_l.remove(request.websocket)
lock.release()
檢視templates
"text模板demo的效果是 開啟2個以上 瀏覽器" id="
message
" value="
hello, world!
"/>
"button
" id="
connect_websocket
">連線 websocket
"button
" id="
send_message
">傳送 message
"button
" id="
close_websocket
">關閉 websocket
"messagecontainer
">
從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 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續性的連線,並...