WedX - журнал о программировании и компьютерных науках

Невозможно заставить работать пространства имен в go-socketio

Я использую https://github.com/googollee/go-socket.io для создания сервера socket.io. Я пытаюсь создать пространство имен, но не могу подключиться к пространству имен со стороны клиента.

Сервер:

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("https://localhost:3000/room1");
socket.on('chat message', function(msg){
        $('#messages').append($('<li>').text(msg));
      });

Я что-то упускаю?

16.01.2015

  • Вы запустили HTTP-сервер? например log.Fatal(http.ListenAndServe(":3000", nil)) 16.01.2015
  • @АттилаО. Да, конечно. Соединения с корневым пространством имен работают хорошо. 16.01.2015

Ответы:


1

Функциональность пространства имен в этом пакете кажется нарушенной. Видеть:

29.11.2016

2

Вы хотите префикс ваших пространств имен с косой чертой. Код, который вы привели в качестве примера, станет:

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

Попробуйте.

04.05.2015

3

используйте этот образец:

package main

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


func main() {


    server, err := socketio.NewServer(nil)
    if err != nil {
        log.Fatal(err)
    }
    // server.SetMaxConnection(9000000);

    server.On("connection", func(so socketio.Socket) {
        log.Println("on connection")
        log.Println(so.Id())



        so.On("CHAT", func(msg string) {
            log.Println("CHAT +++++++>"   , msg)
        })


        so.On("server", func(msg string) {
            log.Println("serverpublic  =====>  "   , msg)
        })



        so.On("disconnection", func() {
            log.Println("on disconnect")
        })

    })


    server.On("error", func(so socketio.Socket, err error) {
        log.Println("error:", err)
    })


    http.Handle("/socket.io/", server)
    log.Println("Serving at localhost:16900...")
    log.Fatal(http.ListenAndServe(":15900", nil))
}//main
30.01.2019

4

На стороне сервера

По умолчанию socket.io работает в пространстве имен по умолчанию (/)

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

Вы создаете пространства имен по умолчанию.

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

Теперь вы можете отправлять и получать сообщения в своем пользовательском пространстве имен.

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

}

На стороне клиента вы можете подключиться к пространству имен со следующим

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

Я надеюсь, что это охватывает ваш вопрос о пространствах имен в socket.io

17.01.2015
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]