Coder Social home page Coder Social logo

aermin / ghchat Goto Github PK

View Code? Open in Web Editor NEW
933.0 933.0 171.0 55.48 MB

:octocat: 📱A chat application for GitHub. React + PWA + Node(koa2) + Typescripts + Mysql + Socket.io

Home Page: https://im.aermin.top/group_chat/ddbffd80-3663-11e9-a580-d119b23ef62e

License: MIT License

JavaScript 64.23% HTML 0.67% CSS 12.39% TSQL 1.70% TypeScript 21.01%
axios chat im jwt koa2 mysql nodejs pwa react react-router redux scss socket-io typescript webpack

ghchat's People

Contributors

abbyjl avatar aermin avatar blackmatch avatar dependabot[bot] avatar gaoac avatar zouyoushun 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ghchat's Issues

客户端中InitApp/index.js为什么会被默认初始化并执行

您好!因为现在正在学习您的代码,遇到了一些问题,想请教您一下。

  我在学习代码的过程中,在服务端跟index.js客户端进行socket通信方面遇到了问题,希望能够得到您的解答,问题就是没有理解为什么InitApp/index.js中的InitApp类中的init()函数会被默认执行,具体疑惑如下:
  在客户端的src/conpontent/PrivateChat/index.js中,在一个用户想要给另外一个用户发送信息时(例如A用户想要给B用户发送信息),A用户会通过src/conpontent/PrivateChat/index.js的51行的request.socketEmitAndGetResponse('sendPrivateMsg',data),先将要发送的信息以及B用户的信息发送到服务端,然后这个请求被服务端中server/src/app/socket/app.socket.ts接收(app.socket.ts的89行),服务端通过io.to(e).emit('getPrivateMsg', data);来将信息转发给B用户。
   在客户B的客户端中,接受服务端的socket的部分是客户端代码中的src/app/modules/InitApp/index.js的第65行,然后再通过Action和Reducer来更新客户端的网页信息。
   但是我疑惑的是为什么服务端能够直接和客户端B进行通信,因为我并没有发现InitApp/index.js这个文件被其他程序调用过。通过学习知道,InitApp中的socket部分都是为了跟服务端进行socket通信。也就是为什么InitApp/index.js这个文件会被默认执行。
   通过执行demo时候打印log,我发现只要成功登录进入主页面中,InitApp/index.js的构造函数就会被执行,这是否是一个什么机制,能够自动调用或者初始化这个InitApp对象?
   希望能够得到您的回答,谢谢!

koa2- remove

Hi, I'm asking for your code.
I saw that you use koa2 is a great framework, but it is only used in the authentication/login phase.
To improve the performance and make the code more homogeneous, I would use only socket.io
So it's better to remove koa2 and use socket.io also for registration and login.
What do you think about it?

UI改版

之前的UI长这样:

1

2

3

现在的长这样

4

5

6

image

新版本更干净简洁(??),会不会更丑我也母鸡,毕竟没啥审美😂

multilingual solution with I18

之前的Auth系统是login或者register的时候通过用户输入的userName来判断,后来支持了github auth 登录,造成有可能出现多个相同的userName,这样之前的userName Auth 登录会有bug,所以目前采用的解决方案是将userName Auth 和 Github Auth 分离开,userName Auth登录的时候将查找非github用户(github_id IS NULL)的账户密码进行校验

=>

image

关于ESLint检测未修复的问题与改进建议

存在问题

项目中目前引入了 ESLlint,但是执行 lint 检测,发现仍尚存不少 error。

Code_2020-02-02 11-08-16@2x

改进建议

结合 ESLint、prettier、husky、lint-staged 进行标准编程规范自动化验证,保证 git commit 时代码必须检测通过方可正常 commit,以此保证大伙规范的统一性。

demo?

Can I see a demo work somewhere?

产品设计及定位

本来是想用react技术栈重写之前写的vue-chat,写着写着变成了重构和改版, 除了为了性能和用户体验不断地重构,产品设计也改了挺多

vue-chat是模仿QQ微信的,做的偏向于相对私密的社交,比如加好友需要对方验证通过,加群前只能看到群简介

react-chat我决定搞一点不一样的,做成偏向于开放的社交,比如不需要加好友,不需要验证;搜索到该用户可以直接聊,加群前能看到当前时间之前的群聊天记录(这个feature我绞尽脑汁设计的😂,是为了加群之前看看群里的聊天质量再考虑加不加,省得加入一些不合自己口味的群,还得再次退出);支持github登录,全球最大同性交友网加持open,emmm....

safari 浏览器登录后刷新会先连接再断开

    你好, 应工作需要, 我把此项目后端从node转成Java, 然后改了点其它小的功能, 然后今天突然发现了问题.
    在safari浏览器中, 登录后, 一切正常, 没什么问题, 但是点 刷新,打日志发现会先连接,再断开 (而在正常情况如chrome中, 是先断开,再连接), 造成信息无法即时获取等问题
    几经查找, 原来没改造之前就有这问题😂, 目测是前端的问题,但 react 我的能力也只是在模仿编写的阶段, 有点难找原因.


截屏2020-05-28 下午6 18 46

问题反馈

bug

  1. 移动端登录/注册页展示有问题, 按钮和密码框到一行了(ios夸克浏览器)
  2. 移动端功能bug, 登录后展示"浏览器不支持通知"提示, 然后白屏(ios夸克浏览器)
  3. 发送文件不成功, 没反应
  4. <link rel="manifest" href="./manifest.json"> 相对路径, 非首页就404. service-worker.js同理
  5. 重复刷新页面, 偶现报错并且白屏, 地址 https://im.aermin.top/group_chat/ddbffd80-3663-11e9-a580-d119b23ef62e?name=ghChat
    image

improve

  1. 性能(有缓存的情况下, fiora load基本在1s内, 你的在2.3s左右), MainView.js 和 RightView.js 耗时太多

  2. 样式是内联的, 所以js文件略大

  3. loading字样闪过的问题
    image

  4. https://fiora.suisuijiang.com/fiora-sw.js 这个 消息中的url不能渲染成

feature

  1. 支持粘贴发图

Server load issue

I'm not sure if this is actually related with server load but please check this one.
I'm a fan of this project so forked and customized it.
Now before move to production, we are testing in local. It works really great when have less than 300 users.
But after that, auto-logout issue is happening, chat freezing issue is happening.
And also even though some users sending message but it isn't shown on the other user's side.
Is this related with socket.io concurrent issue? I applied all approaches introduced in google to fix this issue.
But it only increased from 300 to 350 users.
I have nginx server behind the node server.
Would be great if someone gives me a hint how to solve it or ghchat is only for small amount of users?
it can't support large amount of users?

api设计问题

你好 ,为什么这个工程的聊天信息获取都是放到了websocket中,而不是像vue-chat放在http中获取呢?有什么考量吗

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.