go - 如何在 Golang 中使用 socket.io 广播图像?

标签 go socket.io

我想使用 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/

相关文章:

javascript - socket.io应用程序结构

go - 使用 Go 读取 TOML 文件时结果为空

Go编程语言 slice 从头开始

go - 使用 Stdout 和 Stderr 的线程安全操作(exec.Cmd)

node.js - socket.io 不发送给其他用户

socket.io setinterval 方式

date - 在 Go 中解析带有负年份的日期?

string - 为什么将无符号整数转换为字节数组形式的前缀为 "3"的字符串?

node.js - 如何在服务器上创建流端点?

javascript - node.js 和 socket.io。 websocket 的传输类型配置?