精华内容
下载资源
问答
  • 聊天小程序

    千次下载 热门讨论 2012-07-10 20:08:44
    聊天小程序,包含注释 ,完整源码打包上传给大家需要的下载一起学习!
  • 仿微信聊天小程序weChatRoom案例,一款基于微信小程序开发的聊天室实战项目。很早之前就有开发过一个h5版聊天室,最近又在原先思路的基础上开发了个小程序版聊天室,功能效果非常接近微信聊天,实现了消息、表情发送...

    仿微信聊天小程序weChatRoom案例,一款基于微信小程序开发的聊天室实战项目。很早之前就有开发过一个h5版聊天室,最近又在原先思路的基础上开发了个小程序版聊天室,功能效果非常接近微信聊天,实现了消息、表情发送,小程序表情解析,图片、视频上传预览,打赏、红包等微交互场景。整体界面风格及效果挺不错哒。

    ◆ 先睹为快

    ◆ 项目中用到的弹窗插件,是自己开发的小程序弹窗组件wcPop:

    <!-- <>引入弹窗模板.Start -->
    <import src="/utils/component/wcPop/tpl.wxml" />
    <template is="popup" data="{{ ...__options }}" />
    <!-- <>引入弹窗模板.End -->

    ◆ 小程序消息记录数据

    module.exports = [
      { id: "msg1", msgtype: 1, isme: "", avatar: "", author: "", msg: "2019年01月20日 上午11:11", imgsrc: "", videosrc: "" }, //时间提醒
      { id: "msg2", msgtype: 2, isme: "", avatar: "", author: "", msg: "当前群聊人数较多,为了信息安全,请注意聊天隐私", imgsrc: "", videosrc: "" }, //公告提醒
      { id: "msg3", msgtype: 1, isme: "", avatar: "", author: "", msg: "2019年01月20日 上午11:15", imgsrc: "", videosrc: "" }, //时间提醒
      { id: "msg4", msgtype: 3, isme: false, avatar: "../../img/uimg/u__chat-img01.jpg", author: "马总(Alibaba)", msg: "本聊天室每日10:00开22:00关期间请各位会员遵守规则禁止发言,多次警告无效踢出聊天室,永久黑名单禁止进入。", imgsrc: "", videosrc: "" }, //文字消息【别人】
      { id: "msg5", msgtype: 3, isme: true, avatar: "../../img/uimg/u__chat-img14.jpg", author: "Nice奈斯", msg: "老板,表示下呗!", imgsrc: "", videosrc: "" }, //文字消息【自己】
      { id: "msg6", msgtype: 4, isme: false, avatar: "../../img/uimg/u__chat-img02.jpg", author: "Sweet甜心", msg: "", imgsrc: "http://pic.sc.chinaz.com/files/pic/pic9/201901/hpic523.jpg", videosrc: "" }, //图片消息【别人】
      {
        id: "msg7", msgtype: 3, isme: false, avatar: "../../img/uimg/u__chat-img12.jpg", author: "flower花花", msg: "坐等群主的红包哇!:63:", imgsrc: "", videosrc: "" }, //文字消息-含表情【别人】
      { id: "msg8", msgtype: 1, isme: "", avatar: "", author: "", msg: "01月20日 下午14:35", imgsrc: "", videosrc: "" }, //时间提醒
      { id: "msg9", msgtype: 3, isme: false, avatar: "../../img/uimg/u__chat-img04.jpg", author: "BBK(小龙哥)", msg: "微信公开课演讲文稿,大家有时间的话可以去看看。:33::33::33:", imgsrc: "", videosrc: "" }, //文字消息-含链接【别人】
      { id: "msg10", msgtype: 5, isme: false, avatar: "../../img/uimg/u__chat-img04.jpg", author: "BBK(小龙哥)", msg: "", imgsrc: "http://p3.pstatp.com/large/tos-cn-i-0004/39a6ed910d794ea8a6d85860b3464e82", videosrc: "https://v1-tt.ixigua.com/a69066ac303ccae7a155145000555100/5c4abb6b/video/m/2208ef8c54b15ae4be9babf28a888fe6d2411612e7f20000b9e74fcbf091/?rc=anF0NGx0N25tajMzZzczM0ApQHRAbzU1NTU8MzQzMzU2NDUzNDVvQGgzdSlAZjN1KWRzcmd5a3VyZ3lybHh3Zjo1QC1kYGdfcWowb18tLWEtL3NzLW8jbyM2LjYvMjYtLi8tMTIuNi06I28jOmEtcSM6YHZpXGJmK2BeYmYrXnFsOiMuLl4%3D&vfrom=xgplayer" }, //视频消息【别人】
      { id: "msg11", msgtype: 3, isme: true, avatar: "../../img/uimg/u__chat-img14.jpg", author: "Nice奈斯", msg: "优秀!好棒棒呀~~ 向大佬学习。:79:", imgsrc: "", videosrc: "" }, //文字消息-含表情【自己】
      { id: "msg12", msgtype: 2, isme: "", avatar: "", author: "", msg: "'Luci(王巧巧)' 撤回了一条消息", imgsrc: "", videosrc: "" }, //公告提醒
      { id: "msg13", msgtype: 4, isme: false, avatar: "../../img/uimg/u__chat-img11.jpg", author: "Luci(王巧巧)", msg: "", imgsrc: "http://y3.ifengimg.com/bbc8b9401db0d57e/2014/0721/rdn_53ccd985694da.gif", videosrc: "" }, //图片消息【别人】
      { id: "msg14", msgtype: 5, isme: true, avatar: "../../img/uimg/u__chat-img14.jpg", author: "Nice奈斯", msg: "", imgsrc: "http://pic.rmb.bdstatic.com/mvideo/70a0790d49998653eb2deb1cadfbdf93", videosrc: "https://vd3.bdstatic.com/mda-ik6254k2dwqi75zr/mda-ik6254k2dwqi75zr.mp4" }, //视频消息【自己】
      { id: "msg15", msgtype: 6, isme: false, avatar: "../../img/uimg/u__chat-img03.jpg", author: "科比", msg: "", imgsrc: "../../img/emotion/face04/0.gif", videosrc: "" }, //文字消息-含大表情【别人】
      { id: "msg16", msgtype: 3, isme: true, avatar: "../../img/uimg/u__chat-img14.jpg", author: "Nice奈斯", msg: "哈哈哈~~~ 能不能好好聊天,太TM搞笑了,真是笑屎我了。:28:", imgsrc: "", videosrc: "" }, //文字消息-含表情【自己】
    ];

    ◆ 聊天页面数据处理

    // pages/groupChat/groupChat.js
    
    var util = require('../../utils/util.js');
    
    import { wcPop } from '../../utils/component/wcPop/tpl.js';
    
    const emotions = require('./emotion-mock-data.js');
    const messages = require('./chat.mock-data.js');
    var emojParse = require('./emojParse.js');
    
    Page({
    
      /**
       * 页面的初始数据
       */
      data: {
        cursorSpacing: 15, //光标与键盘的距离
        toView: "scrollBottom", //定位到聊天底部
        isEditorFocus: false, //编辑器获取焦点
        isEditorPreview: false, //编辑器消息预览
    
        // 消息记录
        __messages: messages,
    
        // 表情集合
        __emotions: emotions.list,
    
        // 预览图片地址
        previewImgList: [],
    
    
      },
    
      onLaunch: function(){
        // ...
      },
    
      onLoad: function () {
        // 初始化解析表情
        emojParse.init(this, ":_/");
    
        // 解析消息记录里面的表情符号
        var _messages = this.data.__messages;
        for (var i = 0, len = _messages.length; i < len; i++) {
          // 解析含表情的消息
          if (_messages[i].msgtype == 3){
            // 解析消息记录表情字符串
            _messages[i].msg = { emojiTextArray: emojParse.transEmojStr(_messages[i].msg)};
          }
        }
        this.setData({
          __messages: _messages
        });
      },
    
    
      /**
       * 聊天页面JS功能模块-------------------------------------------------
      */
      // 滚动聊天底部
      bindToMsgBottom: function (e) {
        var that = this;
        setTimeout(function(){that.setData({ toView: "scrollBottom" });}, e ? 100 : 0);
      },
    
      // 点击聊天面板区域
      bindTapMsgPanel: function (e) {
        this.setData({ isShowChoosePanel: false });
      },
    
      // 表情/选择区切换
      bindSwtEmotion: function (e) {
        var that = this;
        this.setData({
          isShowChoosePanel: true, isShowEmotion: true, isShowChoose: false,
        });
        // 滚动到聊天底部
        this.bindToMsgBottom();
      },
      bindSwtChoose: function (e) {
        var that = this;
        this.setData({
          isShowChoosePanel: true, isShowEmotion: false, isShowChoose: true,
        });
        // 滚动到聊天底部
        this.bindToMsgBottom();
      },
      // 底部多表情切换
      bindSwtEmotionBar: function(e) {
        var idx = e.currentTarget.dataset.index;
        var _lists = this.data.__emotions;
        for (var i = 0, len = _lists.length; i < len; i++){
          _lists[i].selected = false;
        }
        _lists[idx].selected = true;
        this.setData({ __emotions: _lists });
      },
    
      // 点击大图
      bindGifImageTap: function (e) {
        wx.showLoading({title: '发送中...',});
    
        var that = this;
        var _messages = this.data.__messages;
        var _len = _messages.length;
        var gifpath = e.currentTarget.dataset.path;
    
        // 消息队列
        var _data = {
          id: `msg${++_len}`,
          msgtype: 6, //大表情
          isme: true,
          avatar: "../../img/uimg/u__chat-img14.jpg",
          author: "Nice奈斯",
          msg: "",
          imgsrc: gifpath,
          videosrc: ""
        };
        _messages = _messages.concat(_data);
        this.setData({ __messages: _messages });
        setTimeout(function () { wx.hideLoading(); }, 100);
    
        // 滚动到聊天底部
        this.bindToMsgBottom(true);
      },
    
      // 选择图片
      bindChooseImage: function (e) {
        var that = this;
        var _messages = this.data.__messages;
        var _len = _messages.length;
    
        // 消息队列
        var _data = {
          id: `msg${++_len}`,
          msgtype: 4, //发送图片
          isme: true,
          avatar: "../../img/uimg/u__chat-img14.jpg",
          author: "Nice奈斯",
          msg: "",
          imgsrc: "",
          videosrc: ""
        };
    
        wx.chooseImage({
          count: 1,
          success: function(res) {
            // console.log(res);
            // console.log(res.tempFilePaths);
    
            _data.imgsrc = res.tempFilePaths.toString(); //把单张数组格式图片转换为字符串格式
            _messages = _messages.concat(_data);
            that.setData({ __messages: _messages });
    
            // 滚动到聊天底部
            that.bindToMsgBottom(true);
          },
        })
      },
    
      // 预览图片
      bindPreviewImage: function (e) {
        // 遍历所有当前聊天记录图片
        var _src = e.currentTarget.dataset.src;
        var _messages = this.data.__messages;
        var _imglist = this.data.previewImgList;
        for (var i = 0, len = _messages.length; i < len; i++) {
          if (_messages[i].imgsrc != "" && _messages[i].msgtype == 4) {
            if (_imglist.indexOf(_messages[i].imgsrc) == -1) {
              _imglist.push(_messages[i].imgsrc);
            }
          }
        }
        // preview images
        wx.previewImage({
          current: _src,
          urls: _imglist,
        })
      },
    
      // 预览视频
      bindPreviewVideo: function (e) {
        var _id = e.currentTarget.dataset.id;
        this.playContext = wx.createVideoContext("video_" + _id, this);
    
        this.playContext.play();
        this.playContext.requestFullScreen({ direction: 0 });
      },
      // 全屏事件
      bindFullscreenchange: function (e) {
        var _id = e.currentTarget.dataset.id;
        this.fullchangeContext = wx.createVideoContext("video_" + _id, this);
    
        if (e.detail.fullscreen == false){
          this.fullchangeContext.pause();
          this.fullchangeContext.exitFullScreen();
        }
      },
      // 视频播放结束
      bindEndedVideo: function (e) {
        var _id = e.currentTarget.dataset.id;
        this.stopContext = wx.createVideoContext("video_" + _id, this);
    
        this.stopContext.stop();
        this.stopContext.exitFullScreen();
      },
    
      // 打赏
      bindDashang: function (e) {
        var dsIdx = wcPop({
          skin: 'android',
          content: ['wc__tmpl_dashang'],
          xclose: true,
          shadeClose: false,
          style: 'background: #f3f3f3;',
        });
      },
    
      // 发送红包
      bindHongbao: function (e) {
        var hbIdx = wcPop({
          skin: 'android',
          content: ['wc__tmpl_hongbao'],
          xclose: true,
          shadeClose: false,
          style: 'background: #f3f3f3;',
        });
      },
    
    
    })

     

    转载于:https://www.cnblogs.com/xiaoyan2017/p/10336556.html

    展开全文
  • 使用python编写聊天小程序

    千次阅读 2018-07-13 14:55:48
    本文为大家分享了python实现聊天小程序的具体代码,供大家参考,具体内容如下:这里实现的是客户端与服务端进行通信的功能,比较简单。

    本文为大家分享了python实现聊天小程序的具体代码,供大家参考,具体内容如下:

    这里实现的是客户端与服务端进行通信的功能,比较简单。

    server.py

    import  socket
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind(('127.0.0.1',9999))#监听端口
    s.listen(1)#调用listen()方法开始监听端口,传入的参数指定等待连接的最大数量
    sock,addr = s.accept()
    buf = sock.recv(1024).decode()
    while True:
        if buf!='exit':
            print("客户端: " + buf)
        data =input("服务端: ")
        sock.send(data.encode())
        if data=='exit':
            break
        buf=sock.recv(1024).decode()

    client.py

    import socket
    import sys
    #创建一个socket
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #建立连接
    s.connect(('127.0.0.1', 9999))
    while True:
        # 发送数据:
        try:
            data = input("客户端说:")
            s.send(data.encode())
            buf = s.recv(1024).decode()
            if buf!='exit':
                print("服务端说: " + buf)
        except:
            print("Dialogue Over")
            s.close()
            sys.exit(0)
    我们需要打开两个命令行窗口,一个运行服务器程序,另一个运行客户端程序,就可以看到效果了



    展开全文
  • 今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Python 超简单的聊天程序 客户端: ...

    用Python写一个模拟qq聊天小程序的代码实例

     

    前言

    今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Python 超简单的聊天程序

    客户端:

    用Python写一个模拟qq聊天小程序的代码实例

     

     

    服务器:

     

    用Python写一个模拟qq聊天小程序的代码实例

     

     

    模拟qq聊天,语言环境:Python3

    示例代码:

     

    用Python写一个模拟qq聊天小程序的代码实例

    展开全文
  • java TCPSocket聊天小程序

    千次阅读 2013-11-17 16:30:10
    java TCPSocket聊天小程序
    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class TestChatServer {
    
    	public static void main(String[] args) {
    		InputStream in = null;
    		OutputStream out = null;
    		DataInputStream dis = null;
    		DataOutputStream dos = null;
    		BufferedReader br = null;
    		Socket s = null;
    		try {
    			ServerSocket ss = new ServerSocket(8888);
    			boolean flog = true;
    			s = ss.accept();
    			in = s.getInputStream();
    			out = s.getOutputStream();
    			dis = new DataInputStream(in);
    			dos = new DataOutputStream(out);
    			String str = null;
    			br = new BufferedReader(new InputStreamReader(System.in));
    			while (flog) {
    				str = dis.readUTF();
    				if (str.equals("bye")) {
    					System.out.println("client say : bye bye");
    					flog = false;
    				} else {
    					System.out.println("client say :" + str);
    				}
    				str = br.readLine();
    				dos.writeUTF(str);
    				dos.flush();
    				System.out.println("server say :" + str);
    			}
    			br.close();
    			dis.close();
    			dos.close();
    			s.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    
    
    
    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class TestChatClient {
    
    	public static void main(String[] args) {
    		InputStream in = null;
    		OutputStream out = null;
    		BufferedReader br = null;
    		try {
    			Socket s = new Socket("127.0.0.1", 8888);
    			in = s.getInputStream();
    			out = s.getOutputStream();
    			DataOutputStream dos = null;
    			DataInputStream dis = null;
    			boolean flog = true;
    			dos = new DataOutputStream(out);
    			br = new BufferedReader(new InputStreamReader(System.in));
    			String str = null;
    			dis = new DataInputStream(in);
    			while (flog) {
    				str = br.readLine();
    				System.out.println("client say :" + str);
    				dos.writeUTF(str);
    				dos.flush();
    				str = dis.readUTF();
    				if (str.equals("bye")) {
    					flog = false;
    					System.out.println("server say : bye bye");
    				} else {
    					System.out.println("server say :" + str);
    				}
    			}
    			br.close();
    			dis.close();
    			dos.close();
    			s.close();
    		} catch (UnknownHostException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

    展开全文
  • udp聊天小程序

    2008-12-03 21:18:00
    udp控制台聊天小程序,包括代码注释http://download.csdn.net/source/834531
  • 基于TCP协议的Java聊天小程序

    千次阅读 2017-08-28 14:50:46
    基于TCP协议的Java聊天小程序 一、基本思路 1.1 利用ServerSocket和Socket通信基本原理 Java.net包中提供了ServerSocket和Socket类来实现基于TCP的通信。利用ServerSocket可以创建服务器,利用Socket类...
  • 简单socket聊天小程序+socket简单封装

    千次阅读 2018-09-02 18:00:11
    一、单线程简单socket聊天小程序 二、windows socket套接字简单封装 三、IP地址的表示形式与各个转换函数 一、单线程简单socket聊天小程序 客户端 #include&amp;amp;lt;WinSock2.h&amp;amp;gt;...
  • 名称:利用有名管道实现进程间通信(聊天小程序) 说明:此程序,是有名管道实现进程间的相互通信。 关于有名管道,需要说的是,它是一个特殊的文件,因为它的名字会保存在文件系统中(inode节点,这也是其为...
  • java网络编程实现聊天小程序

    千次阅读 2019-04-08 19:50:45
    这里运用到的是Java基于TCP的socket编程,详细讲解,请自行百度。 我这里分三步,贴出代码! 1.客户端 ClientTest01.java import java.io.BufferedReader; import java.io.IOException;...import j...
  • 项目实战:Qt5/C++:TCP的C/S的聊天小程序: 开源之美 ----------编译环境:Win10专业版x64 QtCreate5.8---------- 成品效果图: 主要源码: //********************************TcpClient****************...
  • package chat; import javax.swing.*; public class Client { public static void main(String[] args) {// 使用Windows的界面风格 try { UIManager.setLookAndFeel(... } catch (Exception e) { ...}
  • python实现简单的聊天小程序

    万次阅读 2018-07-04 17:46:53
    这是一个使用python实现一个简单的聊天室的功能,里面包含群聊,私聊两种聊天方式.实现的方式是使用套接字编程的一个使用TCP协议 c/s结构的聊天室 实现思路 x01 服务端的建立 首先,在服务端,使用socket进行消息的...
  • UDP聊天小程序-菜鸟

    千次阅读 2016-09-22 14:41:54
    * UDP实现无界面聊天室* */ public class UDPEnd1 { public static void main(String[] args) { new Thread(new Sender()).start(); new Thread(new Receiver()).start(); } } //发送端线程 class Sender ...
  • <?xml version="1.0" encoding="utf-8"?> <... android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="58dp" ...
  • Python实现群聊天小程序代码

    千次阅读 2018-06-13 10:31:33
    wel = '''欢迎进入聊天室 . 请输入你的名字:''' try: client.send(wel) name = client.recv(1024) inputs.append(client) fd_name[client] = name nameList = "已在线聊天的群成员是 %s" % (who_in_room(fd_...
  • java网络通信技术示例:简单的聊天小程序

    万次阅读 多人点赞 2018-05-24 20:08:40
    再学习完java的通信技术后,做了一个简单的窗体聊天程序程序非常简单,主要目的是当练习巩固自己所学的东西,在这里写出来记录以下。下面直接上代码。首先是服务端代码:package ChatTwoPackage; import java.io....
  • 用Python写一个模拟qq聊天小程序

    千次阅读 2019-01-24 11:32:22
    # 编写一个程序,模拟qq聊天 # 要求:程序可以同时发消息和收消息,发和收的过程中程序不退出 # 思路:使用socket来完成(socket 是全双工模式,可以实现收和发同时进行),定义俩个线程,一个负责发消息、一个负责收...
  • 这是一个简易的聊天程序。 (1)如何修改服务方,使用户自己发送的消息不显示在自己的文本域中。 (2)在客户方显示用户列表,可以选择将信息发送给哪些用户。 (3)如何在服务方对退出的用户进行处理,保证聊天...
  • 开发环境: IDEA 2018.2 集成开发工具。 实现功能: 1、用户上线,向服务器通知并注册。 ...1、服务器端实例化一个ServerSocket对象,调用accept方法等待客户端连接到服务器。...2、客户端实例化 Socket...
  • 本人介绍一下基于java多线程和socket实现简易聊天室的小程序。  本程序实现的目标是,一个服务端和N个客户端可以实现互相聊天,客户端一个线程用于发送消息,另一个线程负责接收消息。服务端用N个线程进行消息...
  • 用Socket实现聊天小程序

    千次阅读 2011-01-17 16:50:00
     下面是我用Socket做的一个聊天小程序。大家会发现,也很简单。 参考代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; ...
  • 基于Socket的客户端服务端通信--Java GUI界面小程序 Socket概念及其通信过程: Socket是TCP/IP中的基本概念,它负责将TCP/IP包发送到指定的IP地址。也可以看成是在两个程序进行通信连接中的一个端点,一个程序将 ...
  • 一、需求分析 1.当用户上线时,服务器分配ID,同时向其他在线用户广播“xx用户以上线”。 2.列出用户ID,可以列出所有在线用户的ID。 3.能够实现私聊,对指定id的用户发送消息。 4.能够实现群发,向所有人群发...
  • 小程序的界面设计如下: 小程序能够实现的功能有: 发送:向本机(自己)发送聊天消息 记录:所有的聊天记录存储在“config.txt”的文本文件里 清屏:点击后,显示区域清空 震动:类似于QQ中窗口抖动的功能 通过...
  • /** CurrentTime.java代码同上 */
  • 一个UDP的聊天工具代码,全个人编写。如果有什么问题希望大家一起谈论

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,439
精华内容 46,975
关键字:

聊天小程序