我想使用 socket.io 在 Golang(服务器端)中广播图像。我已经知道如何在 Node.js 中执行此操作,但我不知道如何使用 Golang。代码如下:
Node.js(有效):
var io = require('socket.io')(http);
io.on('connection', function(socket){
fs.readFile(imagepath, (err, buf)=>{
socket.broadcast.emit('image', { image: true, buffer:
buf.toString('base64') });
}
开始(没用):
type data struct {
image bool
buffer string
}
server, _ := socketio.NewServer(nil)
server.On("connection", func(socket socketio.Socket) {
f, _ := os.Open(imagepath)
reader := bufio.NewReader(f)
content, _ := ioutil.ReadAll(reader)
encoded := base64.StdEncoding.EncodeToString(content)
socket.Emit("image", data{true, encoded})
})
客户端(使用 Node.js 与服务器端一起工作):
var img = document.getElementById('img')
var socket = io();
socket.on('image', function(info) {
if(info.image)
{ img.src = 'data:image/jpeg;base64,' + info.buffer;}
});
最佳答案
我自己找到了答案。
GO 中数据结构的声明应该是:
type data struct {
Image bool `json:"image"`
Buffer string `json:"buffer"`}
然后就可以了!
关于go - 如何在 Golang 中使用 socket.io 广播图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744632/