0
点赞
收藏
分享

微信扫一扫

微信小程序简单实现聊天室功能

IT程序员 2022-02-16 阅读 66
<?php
 
$server = new swoole_websocket_server("0.0.0.0", 9501);
 
$server->on('open', function (swoole_websocket_server $server, $request) {
    file_put_contents( __DIR__ .'/log.txt' , $request->fd);
});
 
$server->on('message', function (swoole_websocket_server $server, $frame) {
    global $client;
    $data = $frame->data;
    $fd=$frame->fd;
    $m = file_get_contents( __DIR__ .'/log.txt');
    for ($i=1 ; $i<= $m ; $i++) {
        echo PHP_EOL . '  i is  ' . $i .  '  data  is '.$data  . '  m = ' . $m;
    if($i->$fd){
        $arr=json_decode($data,true);
        $arr['
name
']="我";
        $arr['class']=1;
        $data=json_endode($arr);
 
    }    
    $server->push($i, $data );
    }
 
});
 
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed\n";
});
 
$server->start();
 
接下来XML页面
 
<view>
  <view class="sendmessage">
    <input id="message" bindinput="inputMessage" placeholder="请输入聊天内容"></input>
    <button bindtap="sendMessage">发送</button>
  </view>
</view> 
<view>
<scroll-view scroll-y="true" class="history">
<view wx:for="{{message}}">
  <block wx:if="{{item.class == 1}}">
    <view class="user">{{item.name}}说:{{item.msg}}</view>
  </block>
 
  <block wx:else>
    <view class="service">{{item.name}}说:{{item.msg}}</view>
  </block>
</view>
</scroll-view>
</view> 
 
 
//获取应用实例
var app = getApp()
var socketOpen="false"
var inputMessage=""
var i=0
var msgInfo={}
Page({
    data: {
        message:""
  },
 
    //获取输入框信息
    inputMessage: function(e) {
        inputMessage=e.detail.value
    },
    
    //点击事件
    sendMessage:function(){
        if (socketOpen) {
            var nickname = wx.getStorageSync('nickname')
            if (nickname=="") {
                nickname="游客"
            }        
         var data1='{"name":"'+nickname+'","msg":"'+inputMessage+'"}'
            wx.sendSocketMessage({
                data:data1
            })
        }
    },
 
  //页面加载事件
  onLoad: function () {
      var that=this
    wx.connectSocket({
        url: 'ws://192.168.1.181:9502/swoole/ws_server.php'
    })
 
    wx.onSocketOpen(function(res) {
        socketOpen="true"
        
    })
 
    wx.onSocketMessage(function(res) {
        i=i+1
        //console.log(res)
        var re=JSON.parse(res.data)
        msgInfo[i]=re
        console.log(msgInfo)
        if(res.data){
            that.setData({
                message:msgInfo
            })
        }       
       
    })
  }
})
 
举报

相关推荐

0 条评论