http - 在 http 路由处理程序中包装 socketio 服务
问题描述
我有一个用go编写的小型Web服务器,带有http路由器,我试图将路由包装到运行socket.io服务的处理程序,我对socket.io不太熟悉,所以我可能做错了什么。当我通过浏览器“localhost:5001/socketio”访问我的端点时,我收到“无效传输”并得到“400”,此外,我的 html 没有显示在单独的 router.handle 处理的页面上,我的代码,看起来 socketio 服务甚至没有启动:
服务处理程序
func socketio() *socket.Server {
serverio, err := socketio.NewServer(nil)
if err != nil {
log.Fatal(err)
}
serverio.On("connection", func(so socketio.Socket) {
log.Println("on connection")
so.Join("chat")
so.On("chat message", func(msg string) {
log.Println("emit:", so.Emit("chat message", msg))
so.BroadcastTo("chat", "chat message", msg)
})
so.On("disconnection", func() {
log.Println("on disconnect")
})
})
serverio.On("error", func(so socketio.Socket, err error) {
log.Println("error:", err)
})
return serverio
}
路由器代码
func newRouter() *http.ServeMux {
router := http.NewServeMux()
router.Handle("/socketio", socketio())
router.Handle("/", http.FileServer(http.Dir("./asset")))
return router
}
解决方案
推荐阅读
- apache - ReplaceText 处理器
- java - 具有动态部分的 RecyclerView
- ios - NSFetchedResultsController 没有正确更新 tableView
- mysql - 使用准备好的语句插入多行
- sql - 如何对另一个表中的记录数进行采样?
- php - 无法弄清楚是什么导致了这个致命错误:在非对象上调用成员函数 format()
- swift - 在 2 个字典中打印字典键
- node.js - 到 node.js 的 Python 代码
- javascript - 链接到路由 Material-UI MenuItems
- java - 连接来自不同服务器的 postgres 表