Categorygithub.com/control-center/go-socket.io
modulepackage
0.0.0-20160325170805-6510d8a2fa02
Repository: https://github.com/control-center/go-socket.io.git
Documentation: pkg.go.dev

# README

##socket.io library for Golang

forked from http://code.google.com/p/go-socketio
Documentation: http://godoc.org/github.com/googollee/go-socket.io ##Demo

server:

package main

import (
  "fmt"
  "github.com/googollee/go-socket.io"
  "log"
  "net/http"
)

func news(ns *socketio.NameSpace, title, body string, article_num int) {
  var name string
  name = ns.Session.Values["name"].(string)
  fmt.Printf("%s said in %s, title: %s, body: %s, article number: %i", name, ns.Endpoint(), title, body, article_num)
}

func onConnect(ns *socketio.NameSpace) {
  fmt.Println("connected:", ns.Id(), " in channel ", ns.Endpoint())
  ns.Session.Values["name"] = "this guy"
  ns.Emit("news", "this is totally news", 3)
}

func onDisconnect(ns *socketio.NameSpace) {
  fmt.Println("disconnected:", ns.Id(), " in channel ", ns.Endpoint())
}

func main() {
  sock_config := &socketio.Config{}
  sock_config.HeartbeatTimeout = 2
  sock_config.ClosingTimeout = 4

  sio := socketio.NewSocketIOServer(sock_config)

  // Handler for new connections, also adds socket.io event handlers
  sio.On("connect", onConnect)
  sio.On("disconnect", onDisconnect)
  sio.On("news", news)
  sio.On("ping", func(ns *socketio.NameSpace){
    sio.Broadcast("pong", nil)
  })

  //in politics channel
  sio.Of("/pol").On("connect", onConnect)
  sio.Of("/pol").On("disconnect", onDisconnect)
  sio.Of("/pol").On("news", news)
  sio.Of("/pol").On("ping", func(ns *socketio.NameSpace){
    sio.In("/pol").Broadcast("pong", nil)
  })

  //this will serve a http static file server
  sio.Handle("/", http.FileServer(http.Dir("./public/")))
  //startup the server
  log.Fatal(http.ListenAndServe(":3000", sio))
}

go client:

package main

import (
  "log"
  "github.com/googollee/go-socket.io"
)

func pol() {
  client, err := socketio.Dial("http://127.0.0.1:3000/pol")
  if err != nil {
    panic(err)
  }
  client.On("connect", func(ns *socketio.NameSpace) {
    log.Println("pol connected")
  })
  client.On("news", func(ns *socketio.NameSpace, message string) {
    log.Println(message, " in Pol")
  })
  client.Run()
}

func main() {
  client, err := socketio.Dial("http://127.0.0.1:3000/")
  if err != nil {
    panic(err)
  }
  client.On("connect", func(ns *socketio.NameSpace) {
    log.Println("connected")
    ns.Emit("ping", nil)
  })
  client.Of("/pol").On("news", func(ns *socketio.NameSpace, message string) {
    log.Println(message, " in Pol 2")
  })
  client.On("news", func(ns *socketio.NameSpace, message string) {
    log.Println(message)
  })
  client.On("pong", func(ns *socketio.NameSpace) {
    log.Println("got pong")
  })

  go pol()

  client.Run()
}

javascript client

NOTE: There is a provided socket.io.js file in the lib folder for including in your project

  var socket = io.connect();
  socket.on("connect", function(){
    socket.emit("news", "this is title", "this is body", 1)
  })
  socket.on("news", function(message, urgency){
    console.log(message + urgency);
    socket.emit("ping")
  })
  socket.on("pong", function() {
    console.log("got pong")
  })
  socket.of("/pol").on("news", function(message, urgency){
    console.log(message + urgency);
    socket.emit("ping")
  })
  socket.of("/pol").on("pong", function() {
    console.log("got pong")
  })
  socket.on("disconnect", function() {
    alert("You have disconnected from the server")
  })
  var pol = io.connect("http://localhost/pol");
  pol.on("pong", function() {
    console.log("got pong from pol")
  })
  pol.on("news", function(message, urgency){
    console.log(message + urgency);
    socket.emit("ping")
  })

##Changelog

  • Added a socket.io client for quick use
  • Fixed the disconnect event
  • Added persistent sessionIds
  • Added session values
  • Added broadcast
  • Added a simpler Emit function to namespaces
  • Fixed connected event on endpoints
  • Added events without arguments
  • Fixed go client endpoints

# Packages

No description provided by the author

# Functions

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author