我设置了一个简单的httpuv WebSocket服务器,它可以接收来自WebSocket客户端的消息,并在收到消息后回显。
例如:
library(httpuv)
s <- startServer("0.0.0.0", 8080,
list(
onWSOpen = function(ws) {
ws$onMessage(function(binary, message) {
ws$send(message)
})
})
)
是否可以在ws$onMessage
回调之外向WebSocket客户端发送消息?
作为一个如何构建语法的例子,我希望能够调用:s$ws$send("Hello")
并将Hello
发送到客户端,而不需要客户端消息/使用任何回调函数。
为了回答我自己的问题,我发现使用R:中的超级赋值运算符是可能的
library(httpuv)
w <- NULL
s <- startServer("0.0.0.0", 8080,
list(
onWSOpen = function(ws) {
w <<- ws # Now, the WebSocket object persists in the global environment
ws$onMessage(function(binary, message) {
ws$send(message)
})
})
)
# Wait for client to connect...
w$send("Hello") # Send message to the client