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

时间:2019-02-18 10:00:50

标签: 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;}
});

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。 type data struct { Image bool `json:"image"` Buffer string `json:"buffer"`} GO中的数据结构声明应为:

INSERT ON CONFLICT

然后它起作用了!