Skip to content

A simple chat system, supports text/voice/video chat, including a native iOS WebRTC client and a signaling system based on socket.io & Node.js

License

Notifications You must be signed in to change notification settings

shotsan/chatchat

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chatchat

A simple chat system demostrating how to build chat applications based on WebRTC, socket.io & Node.js

This system including a web server, a web client, and an iOS client, supports realtime text/voice/video chat.

The iOS client supports voip socket mode which means it could receive message even in background

Note: Since voip mode is deprecated from iOS 10, so you can no longer receive messages from background anymore. Refer here.

About WebRTC

WebRTC is an open framework for the web that enables Real Time Communications in the browser. It includes the fundamental building blocks for high-quality communications on the web, such as network, audio and video components used in voice and video chat applications.

Home page : https://webrtc.org/

Source : https://chromium.googlesource.com/external/webrtc

About Socket.io

Socket.IO is a JavaScript library for realtime web applications. It enables realtime, bi-directional communication between web clients and servers. It has two parts: a client-side library that runs in the browser, and a server-side library for node.js. Both components have a nearly identical API. Like node.js, it is event-driven.

Socket.IO primarily uses the WebSocket protocol with polling as a fallback option, while providing the same interface. Although it can be used as simply a wrapper for WebSocket, it provides many more features, including broadcasting to multiple sockets, storing data associated with each client, and asynchronous I/O.

Home page : http://socket.io/

Socket.io webserver : https://github.com/socketio/socket.io

Socket.io swift client : https://github.com/socketio/socket.io-client-swift

Deploy steps

Create SSL keys

First, You need to create your own SSL keys for your https server.

cd Server/public/key
openssl genrsa 1024 > private.pem
openssl req -new -key private.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey private.pem -out file.crt

Run your server

Make sure Node is installed first, then open your terminal

cd Server
npm install
node server.js

Run your web client

  • open localhost:3001 on your browser(prefer Chrome or Firefox)
  • ignore the secure warning and proceed
  • type in your nickname and submit

Run your iOS client

  • install dependency with pod install
  • open xcworkspace file
  • build and run
  • upon application launch, type in your host address(server address you are running on)
  • choose anyone online and start video chat

Enjoy chating! 😄

About

A simple chat system, supports text/voice/video chat, including a native iOS WebRTC client and a signaling system based on socket.io & Node.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Objective-C 79.3%
  • JavaScript 14.7%
  • HTML 4.4%
  • CSS 1.4%
  • Ruby 0.2%