聊天室

django实现聊天室、消息推送

那年仲夏 提交于 2019-11-27 08:12:22
Django-channel可以做什么 在Django中,默认使用的是HTTP通信,不过这种通信方式有个很大的缺陷,就是不能很好的支持实时通信。如果硬是要使用HTTP做实时通信的话只能在客户端进行轮询了,不过这样做的开销太大了。 因此,在1.9版本之后,Django实现了对Channels的支持,他所使用的是WebSocket通信,解决了实时通信的问题,而且在使用WebSocket进行通信的同时依旧能够支持HTTP通信。 实现结果 本项目实现了聊天室、消息推送。 项目配置 搭建Django项目 不在讲述搭建项目步骤,以下是项目结构。 Setting配置 INSTALLED_APPS中添加channels; 指定ASGI的路由地址,添加ASGI_APPLICATION = 'tbkt.routing.application' 设置消息通道,添加CHANNEL_LAYERS配置 CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels_redis.core.RedisChannelLayer', 'CONFIG': { "hosts": ["redis://:password@address:port/db"], }, }, } Routing——websocket路由配置(类似于Django中的urls系统)

安卓多人聊天室客户端

大兔子大兔子 提交于 2019-11-27 02:37:43
安卓多人聊天室客户端 主活动代码 package com.example.chatroom_client; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.io.OutputStream; import java.net.Socket; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private OutputStream outputStream = null; private Socket socket = null; private String ip = "192.168.1.150"; private Button btn_cnt; private EditText et

安卓多人聊天室服务端

你。 提交于 2019-11-27 02:37:30
安卓多人聊天室服务端 服务端没有图形界面,直接上代码 package cn.ttw.netProgram.tcp; import java.io.*; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; public class Server { public static void main(String[] args) { startServer = new startServer(); startServer.start(); } public static ArrayList<UserThread> socketList = new ArrayList<>(); public static startServer startServer; static class startServer extends Thread { public void run() { try { ServerSocket serverSocket = new ServerSocket(6666, 50, InetAddress.getByName("192.168.1.150")); while (true) { Socket

基于springboot的websocket聊天室

倖福魔咒の 提交于 2019-11-26 23:49:00
WebSocket入门 1.概述 1.1 Http #http简介 HTTP是一个应用层协议,无状态的,端口号为80。主要的版本有1.0/1.1/2.0. #http1.0/1.1/2.0 1.HTTP/1.* 一次请求-响应,建立一个连接,用完关闭; 2.HTTP/1.1 串行化单线程处理,可以同时在同一个tcp链接上发送多个请求,但是只有响应是有顺序的,只有上一个请求完成后,下一个才能响应。一旦有任务处理超时等,后续任务只能被阻塞(线头阻塞); 3.HTTP/2 并行执行。某任务耗时严重,不会影响到任务正常执行 1.2 WebSocket #WebSocket简介 Websocket是html5提出的一个协议规范,是为解决客户端与服务端实时通信。本质上是一个基于tcp,先通过HTTP/HTTPS协议发起一条特殊的http请求进行握手后创建一个用于交换数据的TCP连接.WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议。 #WebSocket连接过程 1. 浏览器、服务器建立TCP连接,三次握手。这是通信的基础,传输控制层,若失败后续都不执行。 2. TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket支持的版本号等信息。(开始前的HTTP握手) 3. 服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。 4.

用Servlet实现聊天室设计

北城以北 提交于 2019-11-26 14:13:35
实验一 Servlet 编程 一 . 实验目的 1. 熟悉 Java EE 编程环境 JDK 和 NetBeans 的安装,配置和使用; 2. 掌握 Servlet 的编写及部署; 3. 掌握 Servlet 的工作原理和编程接口; 4. 掌握 Servlet 中客户端输入数据处理技术; 5. 掌握 Servlet 中的会话跟踪技术; 6. 掌握 Servlet 中的请求指派技术; 7. 掌握 Servlet 上下文属性的使用方法 ; 8. 掌握 Servlet 中 Filter 基本编程技术 ; 9. 掌握 Servlet 中 Listener 基本编程技术 ; 二 . 实验内容 利用 JavaEE 相关技术实现一个简单的 Web 聊天室系统,具体要求如下。 ( 1 ) 编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息。 ( 2 ) 编写一个 Servlet 程序 Main.java 通过请求指派来处理用户提交的登录信息,如果用户名为本小组成员的名字且密码为对应的学号时,跳转到 LoginSuccess 显示聊天界面(类似于 QQ 群聊天界面,可使用 HTML 中的 frameset 标签生成两个窗口,一个用来实现用户信息输入,另一个显示所有用户聊天记录的);否则跳转到 LoginFail页面,提示用户重新登录 ( 注:此页面要包含前面的登录界面 )

swoole聊天室

二次信任 提交于 2019-11-26 14:13:18
服务端: <?phpclass Chat{ const HOST = '0.0.0.0';//ip地址 0.0.0.0代表接受所有ip的访问 const PART = 8080;//端口号 private $server = null;//单例存放websocket_server对象 public $roles = [ '郭靖','杨过','洪七公','尹志平','赵志敬','丘处机','欧阳锋','一灯大师','黄药师' ]; public function __construct() { //实例化swoole_websocket_server并存储在我们Chat类中的属性上,达到单例的设计 $this->server = new swoole_websocket_server(self::HOST, self::PART); //监听连接事件 $this->server->on('open', [$this, 'onOpen']); //监听接收消息事件 $this->server->on('message', [$this, 'onMessage']); //监听关闭事件 $this->server->on('close', [$this, 'onClose']); //设置允许访问静态文件 $this->server->set([ 'document_root' => '

基于swoole实现多人聊天室

天涯浪子 提交于 2019-11-26 14:13:14
核心的swoole代码 基本的cs(client-sercer)结构不变,这里利用的是redis的哈希和set来储存和分组;从而达到了分组,统计,定时推送等功能;最后利用onclose事件来剔除断开的连接,全部代码如下:(没做前端,就不展示了) 核心的swoole ws.php <?php namespace app\common; require_once 'Predis.php'; require_once 'Task.php'; /** * socket面向对象的编译 */ class Ws { CONST HOST='0.0.0.0'; CONST PORT='9501'; public $ws=null; public $getmsg=null; public $server=null; public function __construct() { $this->ws=new \swoole_websocket_server(self::HOST,self::PORT); $this->ws->set([ //启动task必须要设置其数量 'worker_num' => 4, 'task_worker_num' => 2, // 'heartbeat_check_interval' => 5, // 'heartbeat_idle_time' => 10, ]); /

用Swoole+React 实现的聊天室

不想你离开。 提交于 2019-11-25 16:46:00
前后端分离的项目,使用 Swoole+React 实现的聊天室,整个项目的框架结构可以进行参考,前端 react+react-redux+react-router+react-ant 等等,后台使用 easySwoole,自行实现中间件(数据封装,token 验证,签名验证), 认真看代码可以学到很多哦,?! 1. 项目链接 1.1 swoole(请 star) https://github.com/LaravelChen/swoole_chat... 1.2 react(请 star) https://github.com/LaravelChen/React-Small... 1.3 api 框架 (基本需求已全部实现,可以自己试试?) https://github.com/LaravelChen/swoole_api_... 性能展示 (强,强,强) 2. 简介 本人为了更加便利的开发,自行实现了中间件,封装了请求数据体,利用 jwt 实现 api 的 token 验证,集成了 Laravel 的 ORM,再次封装了一套适合 api 编写流程的数据请求流程,具体可以看 App/Base 目录下的 Model 类,具体开发步骤详见代码即可。 3. 主要实现 登录注册,验证码发送(如果需要测试,可以结合前端 react 将验证码打印出来即可) 公共聊天室(一旦用户登录

用Swoole+React 实现的聊天室

筅森魡賤 提交于 2019-11-25 16:45:55
前后端分离的项目,使用 Swoole+React 实现的聊天室,整个项目的框架结构可以进行参考,前端 react+react-redux+react-router+react-ant 等等,后台使用 easySwoole,自行实现中间件(数据封装,token 验证,签名验证), 认真看代码可以学到很多哦,?! 1. 项目链接 1.1 swoole(请 star) https://github.com/LaravelChen/swoole_chat... 1.2 react(请 star) https://github.com/LaravelChen/React-Small... 1.3 api 框架 (基本需求已全部实现,可以自己试试?) https://github.com/LaravelChen/swoole_api_... 性能展示 (强,强,强) 2. 简介 本人为了更加便利的开发,自行实现了中间件,封装了请求数据体,利用 jwt 实现 api 的 token 验证,集成了 Laravel 的 ORM,再次封装了一套适合 api 编写流程的数据请求流程,具体可以看 App/Base 目录下的 Model 类,具体开发步骤详见代码即可。 3. 主要实现 登录注册,验证码发送(如果需要测试,可以结合前端 react 将验证码打印出来即可) 公共聊天室(一旦用户登录