Updated Readme

This commit is contained in:
claudemiro
2015-01-18 08:01:15 -03:00
parent d1473197b8
commit 5218fb2ca4
2 changed files with 141 additions and 17 deletions
+137 -13
View File
@@ -1,20 +1,144 @@
# IPÊ
This software is written in Go - the WYSIWYG lang
Why I wrote this software?
--------------------------
# Why I wrote this software?
1. I wanted to learn Go;
2. I needed a non trivial application;
3. I use Pusher in some projects;
4. I really like Pusher;
1. I wanted to learn Go and I needed a non trivial application;
2. I use Pusher in some projects;
3. I really like Pusher;
Where this name came from?
--------------------------
# Features
Here in Brazil we have this beatiful tree called Ipê, it comes in differente colors: yellow, pink, white, purple.
* Public Channels;
* Private Channels;
* Presence Channels;
* Web Hooks;
* Client events;
* Complete REST API;
* Easy instalation;
* A single binary without dependencies;
* Easy configuration;
* Protocol version 7;
* Multiple apps in the same instance;
* Drop in replacement for pusher server;
What is implemented?
--------------------
# Building
This software use the standard GOPATH structure and Godep as "dependency manager", so, install [godep](https://github.com/tools/godep) first.
Then from the project directory execute:
```console
$ godep restore
$ go install github.com/dimiro1/ipe
```
# How to configure?
## The server
```json
{
"Host": ":8080", // Host and Port
"Expvar": true, // Export variables to /debug/vars
"User": "Username", // Username for Expvar
"Password": "123456", // Password for Expvar
"Apps": [
{
"ApplicationDisabled": false, // Disable this app
"OnlySSL": false, // If this application is avaibale only in SSL
"Secret": "APP_SECRET", // The secret key, do't tell anyone
"Key": "APP_KEY", // Application Key
"Name": "APP_NAME", // This app name
"AppID": "APP_ID", // This app ID
"UserEvents": true, // true if Client events are enabled
"WebHooks": true, // true if WebHooks are enabled
"URLWebHook": "http://localhost:4567/php/hook.php" // Url for webhooks
}
]
}
```
## Libraries
### Client javascript library
```javascript
var pusher = new Pusher(API_KEY, {
wsHost: 'localhost',
wsPort: 8080,
enabledTransports: ["ws", "flash"],
disabledTransports: ["flash"]
});
```
### Client server libraries
Ruby
```ruby
Pusher.host = 'localhost'
Pusher.port = 8080
```
PHP
```php
$pusher = new Pusher(APP_KEY, APP_SECRET, APP_ID, DEBUG, "http://localhost", "8080");
```
NodeJS
```javascript
var pusher = new Pusher({
appId: APP_ID,
key: APP_KEY,
secret: APP_SECRET
domain: 'localhost',
port: 80
});
```
# Logging
This software uses the [glog](https://github.com/golang/glog) library
for more information about logging type the following in console.
```console
$ ipe -h
```
# When use this software?
* When you are offline;
* When you want to control your infrastructure;
* When you do not want to have external dependencies;
* When you want extend the protocol;
# Contributing.
Feel free to fork this repo.
# Pusher
Pusher is an excelent service, their service is very realible. I recomend for everyone.
# Where this name came from?
Here in Brazil we have this beatiful tree called [Ipê](http://en.wikipedia.org/wiki/Tabebuia_aurea), it comes in differente colors: yellow, pink, white, purple.
[I want to see pictures](https://www.flickr.com/search/?q=ipe)
# Author
Claudemiro Alves Feitosa Neto
# LICENSE
Copyright 2014 Claudemiro Alves Feitosa Neto. All rights reserved.
Use of this source code is governed by a MIT-style
license that can be found in the LICENSE file.
1. Only websockets transport is implemented;
2. Only protocol version 7;
+4 -4
View File
@@ -1,15 +1,15 @@
IPÊ
---
* TODO [9/14]
* TODO [11/14]
* [X] Autenticação API Rest
* [X] Autenticação Websockets
* [X] Ping e Pong
* [ ] Escrever testes automatizados
* [ ] SSL
* [X] Expvar - Canais, inscritos
* [-] Otimizações [2/3]
* [ ] Refatorar partes do código, remover repetições
* [X] Otimizações [3/3]
* [X] Refatorar partes do código, remover repetições
* [X] Alterar tipos de dados de slices para mapas em alguns locais.
* [X] Remover Canais vazios.
* [ ] Segurança, tempo de expiração, etc
@@ -26,7 +26,7 @@ IPÊ
* [X] pusher_internal:member_removed
* [X] Remover inscrições quando o web socket for fechado
* [X] Alterar os dados extras da inscrição são relacionados ao canal e não diretamente a inscrição
* [ ] Escrever um README
* [X] Escrever um README
* Dúvidas
* [X] Atualmente o ID do usuário em canais de presença está como string, o protocolo não deixa claro, já ví exemplos onde a chave é um inteiro. Nesse caso essa chave terá que ser um RawMessage, O campo Data inteiro??