这段代码一切正常(将其缩短以便更好地阅读)。
当Client1
向服务器发送请求时,服务器会立即响应他。但是,其他客户端看不到响应消息。
因此,我想进一步说明:当客户端向服务器发送请求时,服务器将响应所有客户端,以便所有客户端都能看到消息。
我怎样才能做到这一点?有任何示例或不错的入门教程吗?
提前致谢!
服务器:
import (
"github.com/gorilla/websocket"
)
func main() {
http.Handle("/server", websocket.Handler(echoHandler))
}
func echoHandler(ws *websocket.Conn) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
return
}
for {
messageType, p, err := conn.ReadMessage()
if err != nil {
return
}
print_binary(p) // simple print of the message
err = conn.WriteMessage(messageType, p);
if err != nil {
return
}
}
}
您必须使用连接池将消息广播到所有连接。您可以将其用作教程/示例http://gary.burd.info/go-websocket-
chat
简化:
连接池是已注册连接的集合。见hub.connections
:
type connection struct {
// The websocket connection.
ws *websocket.Conn
// Buffered channel of outbound messages.
send chan []byte
// The hub.
h *hub
}
type hub struct {
// Registered connections. That's a connection pool
connections map[*connection]bool
...
}
为了广播所有客户端的消息,我们在连接池上进行如下迭代:
case m := <-h.broadcast:
for c := range h.connections {
select {
case c.send <- m:
default:
delete(h.connections, c)
close(c.send)
}
}
}
h.broadcast
在该示例中,是一个包含我们需要广播的消息的频道。
我们用default
一节的select
语句具有完全或阻止发送通道删除连接。
问题内容: 所以现在,我正在制作一个基于客户端服务器应用程序的多线程。在服务器端,我为接受的每个连接创建了一个线程。 在线程类中,我创建了一种将命令发送到客户端的方法。我只想要的是如何将参数发送到所有正在运行的客户端?为简单起见,我只想使此服务器向所有连接的客户端发送消息。 我已经阅读了这篇文章,并从此链接中找到方法。但是,当我尝试使用自己的代码时,中没有类似的方法。 好的,这是我的服务器和线程示
我刚开始使用Firebase云消息。我建了一个IOS应用来接收推送通知。应用程序运行良好。我从Firebase控制台发送消息,它们会正确显示。 我的问题是:我可以向所有设备发送一条消息吗(就像我可以在控制台中做的那样)?我是的,怎么会这样? 提前道谢!
我后来理解对了。实际上,我需要一条来自android客户端的MQTT消息发送到所有其他客户端,所以我想在消息正文中包含publish关键字,这是非常错误的。MQTT本身将接收到的消息发送给所有提供的客户端,如果客户端订阅了该主题的话。
我正在将我的“普通NIO”(=我直接使用了JDK中的软件包)TCP服务器迁移到Netty 4。 我有向所有客户端发送消息的线程,例如运行状况检查数据包,聊天消息广播,直接聊天消息到单个客户端,...使用我保留在某处集合。 我如何在Netty中做到这一点?在一个Netty处理程序和需要发送消息的线程之间共享一个ChannelGroup是否明智?该通道将如下所示: 在所有线程中,我将简单地执行以下操作
问题内容: 我只能在用户的套接字ID直接存储在io.sockets.on(’connect’)函数中时向用户发出消息。我不知道为什么在登录后尝试存储其套接字ID时为什么不起作用。 加工: 无法运作: JavaScript客户端代码段 解决方案:感谢@alessioalex, 我不得不从登录页面中删除对socket.io的引用,并将以下内容添加到io.sockets.on(’connection’)
我知道我们可以通过聊天聊天=muc2.create私人聊天(“myroom@conference.jabber.org /johndoe”);chat.send消息(“你好”);在留档中给出。 但是我没有找到公开和群里所有用户聊天的方法。任何想法? 提前谢谢。