51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"github.com/s-rah/go-ricochet"
 | |
| 	"log"
 | |
| )
 | |
| 
 | |
| // EchoBotService is an example service which simply echoes back what a client
 | |
| // sends it.
 | |
| type EchoBotService struct {
 | |
| 	goricochet.StandardRicochetService
 | |
| }
 | |
| 
 | |
| func (ebs *EchoBotService) OnNewConnection(oc *goricochet.OpenConnection) {
 | |
| 	ebs.StandardRicochetService.OnNewConnection(oc)
 | |
| 	go oc.Process(&EchoBotConnection{})
 | |
| }
 | |
| 
 | |
| type EchoBotConnection struct {
 | |
| 	goricochet.StandardRicochetConnection
 | |
| }
 | |
| 
 | |
| // IsKnownContact is configured to always accept Contact Requests
 | |
| func (ebc *EchoBotConnection) IsKnownContact(hostname string) bool {
 | |
| 	return true
 | |
| }
 | |
| 
 | |
| // OnContactRequest - we always accept new contact request.
 | |
| func (ebc *EchoBotConnection) OnContactRequest(channelID int32, nick string, message string) {
 | |
| 	ebc.StandardRicochetConnection.OnContactRequest(channelID, nick, message)
 | |
| 	ebc.Conn.AckContactRequestOnResponse(channelID, "Accepted")
 | |
| 	ebc.Conn.CloseChannel(channelID)
 | |
| }
 | |
| 
 | |
| // OnChatMessage we acknowledge the message, grab the message content and send it back - opening
 | |
| // a new channel if necessary.
 | |
| func (ebc *EchoBotConnection) OnChatMessage(channelID int32, messageID int32, message string) {
 | |
| 	log.Printf("Received Message from %s: %s", ebc.Conn.OtherHostname, message)
 | |
| 	ebc.Conn.AckChatMessage(channelID, messageID)
 | |
| 	if ebc.Conn.GetChannelType(6) == "none" {
 | |
| 		ebc.Conn.OpenChatChannel(6)
 | |
| 	}
 | |
| 	ebc.Conn.SendMessage(6, message)
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	ricochetService := new(EchoBotService)
 | |
| 	ricochetService.Init("./private_key")
 | |
| 	ricochetService.Listen(ricochetService, 12345)
 | |
| }
 |