Coder Social home page Coder Social logo

perber's Introduction

Perber 是什么

一个可以实时匿名群聊的 web 服务。 特色是无需注册,每个人都可以删掉其他人说的话。

用到了哪些

  • express
  • socket.io
  • redis

功能

  • 长按消息块,删除
  • 来新消息时声音提醒
  • @某人时,会链接到他的twitter
  • 简单的颜文字表情识别
  • 识别新浪图床和 instagram的图片 url ,直接展示图片
  • 识别发言人所在城市或国家
  • 支持中英文识别,英文会以大字体显示
  • 支持虾米音乐识别(不太稳定,最好是以 https://www.xiami.com/song/1769490347 这种数字 id 类型的 url 来测试)
  • 上传图片 20181022 - 因七牛 api 调整,上传图片功能暂时关闭
  • 限制单个人发言次数

如何运行

  1. 在你的 MySQL 中创建名为 perber 的数据库, 然后导入项目根目录中的 perber.sql

  2. /Peber/perber/ 中运行 npm install,安装项目所需的包,当然运行 yarn 也可以。

  3. 修改 config-example.json (位于目录: /Perber/perber/config/ 中) 为 config.json

  4. 修改 config.json 中的 mysqlConf qiniuConfig(前提是已经有了自己的 bucket_name, access_keysecret_key) 和 mailer.

  5. 启动: node perber/app.js

  6. 在浏览器中访问 : http://localhost:6789 (默认端口为 6789)

设置 config.json:

redisConf

如果 redis 端口没改过,基本上保持默认就好

mysqlConf

设置你的 mysql host, port, user, password, database.

qiniuConfig

设置七牛

Perber 用到了 Qiniu 来存储图片, 你需要注册 Qiniu 来获得 "bucket_name" "access_key" 和 "secret_key"。

Qiniu Cloud Storage: http://www.qiniu.com/ Qiniu on Github: https://github.com/qiniu

qqMap

设置腾讯地图 API key: https://lbs.qq.com/guides/startup.html

mailer

用来发信的,可以写俩自己的邮箱

auth

暂时没有用到

session

设置 key 和 secret

app

设置服务运行的端口号(默认端口为 6789)、timer、limit

**app.timer:**

清理程序 sockets.js 里的cleaner() 的自动运行时间间隔,按分钟计算。

设为 1 ,则 1分钟运行一次。

**app.limit:**

在设定的 timer 时间范围内,每个在线用户最多能发多少信息。

theme

保持默认就行,目前只有 default 一种

debug : true | false

调试用的

API

目前只有一个,没什么用。

post new message

url: /api/v1/new

var data = { msg: "HAKULAMATATA test api" };
$.ajax({
    url:'http://www.perber.com/api/v1/new',
    contentType: 'application/json; charset=utf-8',
    type: 'POST',
    data : JSON.stringify(data)
})

UI

  • iOS Safari:

Perber in iOS Safari

  • Chrome(Mackbook Pro 13):

Perber in Chrome

Perber in Chrome

依赖的第三方服务

  • apis.map.qq.com:腾讯地图 API,用于解析 ip, 显示所在城市或国家

  • xiamiRun:之前写的一个用来解析虾米音乐地址的服务 https://github.com/naoyeye/xiamiRun 不太稳定

为什么做这个:

http://www.douban.com/group/topic/45262966/

License

This code is distributed under the terms and conditions of the MIT license.

perber's People

Contributors

afirsraftgarrier avatar dependabot[bot] avatar ihapboy avatar naoyeye avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

perber's Issues

开篇介绍做的很棒

你好,
网站的功能开篇介绍做的很棒,想学习一下怎么设计和开发的。
能高屋建瓴地传授的经验吗?
主要是那些代码实现了这个功能呢,前端和后端?
谢谢!
Hao

Is the createServer('credentials', app) for some security reason?

if(app.get('config').credentials) {
    exports.server = require('https').createServer(app.get('config').credentials, app).listen(app.get('port'), function() {
        // console.log('Perber started on port %d', app.get('port'));
    });
} else {
    exports.server = require('http').createServer(app).listen(app.get('port'), function() {
        // console.log('Perber started on port %d', app.get('port'));
    });
}

Is the createServer('credentials', app) for some security reason? For what kinda specific reason??

添加分页功能

内容一多,全部载入的话不管对客户端而言还是服务器都是一种负担吧。

更新七牛的图片域名

此类测试域名,不能用于自定义域名的 CNAME,无法修改配置,请尽快迁移至自定义域名。

7bv90p.com1.z0.glb.clouddn.com
perber.qiniudn.com

需要换成:
ojdbrgc41.qnssl.com

吞消息

时常会吞消息。考虑加入成功发送状态检测以及失败重试?

装好了perber,如何访问呢?

hi.

as3:/perber/perber# ls
app.js docs node_modules Procfile routes strategy.js views
config init.js package.json public sockets.js utils.js
as3:
/perber/perber# forever start app.js
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: app.js
as3:~/perber/perber#

装好了perber,如何访问呢?其端口号是多少?

Exception: Error: spawn ENOENT

# hanjiyun at localhost in ~/Project/Perber/perber on git:master o [14:27:44]
$ supervisor app

DEBUG: Running node-supervisor with
DEBUG:   program 'app'
DEBUG:   --watch '.'
DEBUG:   --ignore 'undefined'
DEBUG:   --extensions 'node|js'
DEBUG:   --exec 'node'

DEBUG: Starting child process with 'node app'
DEBUG: Watching directory '/Users/hanjiyun/Project/Perber/perber' for changes.
fs: missing callback Error: EEXIST, mkdir './chats'
Exception: Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

增加删除消息的手势控制

1 使用移动端时, 在消息块上 swipe left 出现删除按钮
2 使用触控板或鼠标时, 在消息块上长按左键(或者悬停)2秒出现删除按钮

Readme.md 有很多typos

node perer/app.js

比如这个啦。

然后关于里面的英语有些语法错误和chinglish……

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.