用websocket做聊天系统是非常合适的。

mongols是一个运行于linux系统之上的开源c++库,可轻松开启一个websocket服务器。

首先,build一个websocket服务器。

#include <mongols/ws_server.hpp>
//websocket server
int main(int,char**){
int port=9090;
const char* host="127.0.0.1";
mongols::ws_server server(host,port);
server.run();
}

才几行,这就成了吗?没错!不信你用wsdump.py测试下。测了啊,怎么一发送消息就关闭了连接?这是因为该服务器只接受json字符串消息,并且规定了几个必要field.否则只能接收消息,一发送就将关闭连接:

  1. gid,默认0
  2. uid,默认0
  3. gfilter,默认空数组[],表示转发给任意gid用户,非空则只发送给特定gid用户
  4. ufilter,默认空数组[],表示转发给任意uid用户,非空则只发送给特定uid用户

其他field为开发者自己决定。

因此,开发者只需在前端用javascript即可完成所有核心开发工作。

这里有演示地址和全部开源代码,包括前端和后端:

https://github.com/webcpp/fusheng

集成富文本编辑器quill,可发图片,代码,latex数学公式,纯文本当然没问题啦。

需要知道如何自定义图片上传的quill开发者,也可了解下。很简单的:

   var quill = new Quill('#editor-container', {
modules: {
formula: true,
syntax: true,
toolbar: '#toolbar-container'
},
placeholder: 'To be a good man! The best brower is Chrome.',
theme: 'snow',
});
var toolbar = quill.getModule('toolbar');
toolbar.addHandler('image', function (e) {
document.getElementById('get_file').click();
}); $('#get_file').change(function () {
var upload_form = $('#upload_form');
var options = {
url: '/upload',
type: 'post',
success: function (ret) {
if (ret.err == 0) {
var range = quill.getSelection();
quill.insertEmbed(range.index, 'image', ret.upload_path);
$('#get_file').val('');
} else {
toast.show({ // 'error', 'warning', 'success'
// 'white', 'blue'
type: 'error', // toast message
text: 'upload error', // default: 3000
time: 3000 // 5 seconds });
}
},
error: function () {
toast.show({
type: 'error', text: 'upload error or too big.', time: 3000
});
} }
upload_form.ajaxSubmit(options); });

  

用mongols轻松打造websocket应用的更多相关文章

  1. 用WPF轻松打造iTunes CoverFlow效果

    原文:用WPF轻松打造iTunes CoverFlow效果 用WPF轻松打造iTunes CoverFlow效果                                             ...

  2. 【Microsoft Azure 的1024种玩法】八. 基于Azure云端轻松打造一款好用的私有云笔记

    [简介] Leanote一款开源云笔记软件,它使用Go的Web框架revel和MongoDB开发完成的,其是目前为止发现的最有bigger的云笔记,它支持markdown输入,代码高亮,多人协作,笔记 ...

  3. iOS教你轻松打造瀑布流Layout

    前言 : 在写这篇文章之前, 先祝贺自己, 属于我的GitHub终于来了. 这也是我的GitHub的第一份代码, 以下文章的代码均可以在Demo clone或下载. 欢迎大家给予意见. 觉得写得不错的 ...

  4. 【腾讯云的1001种玩法】 Laravel 整合微视频上传管理能力,轻松打造视频App后台

    版权声明:本文由白宦成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/108597001488193402 来源:腾云阁 h ...

  5. 完全用nosql轻松打造千万级数据量的微博系统(转)

    原文:http://www.cnblogs.com/imxiu/p/3505213.html 其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量 也并不是一千万条微博信 ...

  6. 完全用nosql轻松打造千万级数据量的微博系统

    其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量也并不是一千万条微博信息而已,而是千万级订阅关系之间发布.在看 我这篇文章之前,大多数人都看过sina的杨卫华大牛的微 ...

  7. 【PS实例】轻松打造梦幻的照片

    本系列教程将开始讲解PS的一些制作实例,通过实例的讲解同时介绍各种工具和面板机快捷键的使用,这样能够让大家更有兴趣学习,在学习的同时能够创造出自己喜欢的东西.本人使用的教程都是根据本人多次调试制作,仅 ...

  8. NNVM打造模块化深度学习系统(转)

    [摘录理由]: 之所以摘录本文,主要原因是:该文配有开源代码(https://github.com/dmlc/nnvm):读者能够直接体会文中所述的意义,便于立刻展开研究. MXNet专栏 :NNVM ...

  9. 补习系列(20)-大话 WebSocket 与 "尬聊"的实现

    目录 一.聊聊 WebSocket 二.Stomp 是个什么鬼 三.SpringBoot 整合 WebSocket A. 引入依赖 B. WebSocket 配置 C. 控制器 D. 前端实现 四.参 ...

随机推荐

  1. ISP PIPLINE (四) Demosaic

    what is the Demosaic? CMOS/CCD在成像时,CFA(color filter array),CFA过滤不同频段的光,因此,Sensor的输出的RAW数据信号包含了3个通道的信 ...

  2. Auth模块、Forms组件

    Auth模块 auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这 ...

  3. 19 ArcGIS Server 备份与恢复

    一.备份过程 1.找到已经安装的arcgis server安装目录,并找到备份工具: 2.快捷键win + R启动cmd,将备份工具文件拖入cmd窗口,enter 3. 通过backup.py脚本进行 ...

  4. oracle的用户管理

    创建用户 在Oracle中创建用户需要用到dba,普通用户无法创建 > create user 用户名 identified by 密码; * 密码必须以英文开头,不然是创建不起来的! * 如果 ...

  5. spring boot 加载application配置文件

    这就要注意了

  6. 好大一个坑: EF Core 异步读取大字符串字段比同步慢100多倍

    这两天遇到一个奇怪的问题,通过 EF/EF Core 查询数据库速度奇慢,先是在传统的 ASP.NET 项目中遇到(用的是EF6.0),后来将该项目迁移至 ASP.NET Core 也是同样的问题(用 ...

  7. python字典转化成json格式。JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换

    遇到问题:进行Webservice接口测试时,对接口入参数据进行了处理,变成了dict格式,去进行接口请求报错. 需要转成成json格式,双引号去扩. 如下: 更改代码: # 在Python标准库的j ...

  8. Enterprise Architect

    Enterprise Architect 是一款计算机辅助软件工程,这款软件用于设计和构建软件系统.业务流程建模及更多通用的建模.EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过 ...

  9. mysql-8.0.15-winx64 解压版安装

    官网下载了一个 mysql-8.0.15-winx64.zip 版本,解压部署过程记录如下: 1.将zip包解压到D盘 2.配置环境变量 在Path中加入D:\Program Files\mysql- ...

  10. win7系统64位配置Oracle 的ODBC数据源

    1.安装oracle客户端 2.在如下路径启动odbc数据源 3.选择系统DSN-添加,选择oracle驱动 4.填写信息如下,填写数据源名称等信息后输入用户名和密码测试连接