# WebSocketDemo **Repository Path**: sunnyj1993/WebSocketDemo ## Basic Information - **Project Name**: WebSocketDemo - **Description**: 使用SwiftUI编写基于WebSocket的即时通讯Demo,遵循最小可行性原则,只实现聊天界面。 - **Primary Language**: Swift - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-05-16 - **Last Updated**: 2021-11-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebSocketDemo #### 介绍 使用SwiftUI编写基于WebSocket的即时通讯Demo,遵循最小可行性原则,只实现聊天界面。出发点是为了学习WebSocket协议实现长连接用来即时通讯。 `iOS 13.4+` `MacOS 10.15+` `Xcode 11.4.0+` `CocoaPods` 使用Node.js作为服务器端(网上随便找的,并不会写node.js) 通过Starscream实现WebSocket部分 通过SwiftyJSON实现JSON解析部分(因为我太菜了,用Codable解决不了JSON同参不同型时的JSON转Model的问题,SwiftyJSON虽然低效,但是解决问题) #### 安装教程 未将pods文件一同上传,使用时需要使用cocoapods重新加载pod文件 1. 确认你安装了`Cocoapods` 2. 进入项目路径 3. 运行 `pod install` #### 使用说明 1. 首先确认你安装了`node.js` 2. 进入项目路径`nodeapp/`,运行 `node chat-server.js` 开启服务器端 3. 运行模拟器,输入用户名点击Connect #### 截图 ![](https://gitee.com/sunnyj1993/WebSocketDemo/raw/master/pics/2020-05-16%2019.56.29.gif) ![](https://gitee.com/sunnyj1993/WebSocketDemo/raw/master/pics/2020-05-16%2019.57.38.gif) #### 已发现的issues - 由于SwiftUI目前的TextField存在问题,在输入中文时会产生bug,所以使用UITextField封装成SwiftUI的View来解决这个bug,但又带来了另一个问题,封装的自定义TextField在输入过长内容时会向两边无限延伸,暂未找到解决方法。 - 使用SwiftUI的List实现聊天栏,在收到消息时还不能自动将List跳转至最下方显示最新消息,此问题亦未找到解决方法。