2015-01-16 56 views
4

我正在使用https://github.com/googollee/go-socket.io來創建socket.io服務器。我試圖創建一個名稱空間,但我無法連接到客戶端的名稱空間。無法使命名空間在go-socketio中工作

服務器:

func registerHandlers(server *socketio.Server) { 
    server.Of("room1").On("connection", connectionHandler) 
} 

func connectionHandler(so socketio.Socket) { 
    log.Println("on connection") 
    so.Join("chat") 
    so.On("chat message", func(msg string) { 
     so.BroadcastTo("chat", "chat message", msg) 
    }) 
} 

客戶:

var socket = io.connect("http://localhost:3000/room1"); 
socket.on('chat message', function(msg){ 
     $('#messages').append($('<li>').text(msg)); 
     }); 

我這麼想嗎?

+0

你啓動一個HTTP服務器?例如'log.Fatal(http.ListenAndServe(「:3000」,nil))' –

+1

@AttilaO。當然是。與根名稱空間的連接運行良好。 – theG33k

回答

-4

在服務器端

默認情況下socket.io工作在默認命名空間(/)

var io = require('socket.io')(http); 

你比創建默認的命名空間。

var nmspc = io.of('/namespace'); 

現在您可以在您的custum名稱空間內發送和接收消息。

nmspc.on('connection', function(socket){ 
    socket.on('', function(){ 
     ... 
    }); 

} 

在客戶端你可以用下面的

var socket = io('/namespace').connect('http://url:PORT'); 

我希望這個佔地約你的問題中socket.io

0

你想你的前綴命名空間連接到命名空間帶斜槓的命名空間。 你給了作爲例子的代碼將成爲:

func registerHandlers(server *socketio.Server) { 
    server.Of("/room1").On("connection", connectionHandler) 
} 

給一個嘗試。