thinkphp5+workerman搭建微信小程序socket后台,建立自己的聊天室
為什么80%的碼農都做不了架構師?>>> ??
1、下載安裝tp5
這一步就不詳細說了,比較簡單,直接看TP文檔吧
2、通過composer,為tp5集成workermantp
官方真不錯,提供了workerman的集成方法,通過composer一鍵安裝,詳細內容見tp官方的github
3、寫應用,先讓workerman在tp中跑起來(直接應用tp官方內容)
首先創建控制器類并繼承 think\worker\Server,然后設置屬性和添加回調方法
namespace app\index\controller; use think\worker\Server; class Worker extends Server {protected $socket = 'ws://0.0.0.0:2346';public function onMessage($connection,$data){//這里寫具體的邏輯$connection->send($data);} }支持workerman(具體用法請看workerman文檔)所有的回調方法定義(回調方法必須是public類型)
在應用根目錄增加入口文件 server.php
在命令行啟動服務
php server.php startlinux下面可以支持下面指令
php server.php start|stop|status|restart|reload打開chrome瀏覽器,按F12打開調試控制臺,在Console一欄輸入(或者把下面代碼放入到html頁面用js運行)
// 假設服務端ip為127.0.0.1 ws = new WebSocket("ws://127.0.0.1:2346"); ws.onopen = function() {alert("連接成功");ws.send('tom');alert("給服務端發送一個字符串:tom"); }; ws.onmessage = function(e) {alert("收到服務端的消息:" + e.data); };可以看到返回說明搭建成功
4、重點來了,就是讓ws變成wss,這也是最頭疼的問題,需要使用nginx代理
首先,需要為你需要訪問的域名申請SSL,這里是通過Nginx的反向代理實現功能,具體配置如下:
upstream websocket {# 填寫workerman中websocket監聽的端口server 127.0.0.1:2346; }server {# 填寫外部wss連接端口,不沖突即可listen 8282;ssl on;server_name test.painchina.com;ssl_certificate ? ? ?key/key.csr;ssl_certificate_key ?key/key.key;ssl_session_timeout 5m;ssl_session_cache shared:SSL:50m;ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;location / {proxy_pass http://websocket;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";} }(1)把test.painchina.com換成你自己的訪問域名
(2)把key.csr和key.key修改為你自己的SSL證書內容
5、搭建成功,訪問試試
根據上面這個配置,訪問地址為wss://test.painchina.com:8282
注意:微信小程序的sock鏈接不能帶端口的,默認端口是443,帶端口連接會出現開發工具、預覽版正常,體驗版和正式版錯誤
轉載于:https://my.oschina.net/bibo/blog/1498974
總結
以上是生活随笔為你收集整理的thinkphp5+workerman搭建微信小程序socket后台,建立自己的聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物联网是“互联网+”的动力 智慧是核心
- 下一篇: 预告:大牛现身说法 TensorFlow