套接字发送到 nodejs 服务器

时间:2021-01-04 20:09:33

标签: node.js sockets go

我有一个 Node.js 服务器,socket.io 监听端口 4000。我已经能够让 javascript 版本正常工作并发送到套接字。此外,我有一个 Go 应用程序,它正在进行一些计算并将数据从 Go 服务器发送到 Node.js。

我想为此使用套接字,因为它需要实时发生,但由于某些原因无法弄清楚如何仅从 Go 服务器到 Node.js 服务器发出套接字事件。

知道如何实现这一点。这是我的 Node.js 代码:

var express = require('express');
var socket = require('socket.io');

// App setup
var app = express();
var server = app.listen(4000, function(){
    console.log('listening for requests on port 4000,');
});

// Static files
app.use(express.static('public'));

var io = socket(server);
io.on('connection', (socket) => {

    socket.on('join', function(data){
        console.log('get join');
    });

});

在我的 Go 应用程序中,当我得到这个端点时,我想发送到 Node.js 服务器

mux.GET("/socket", SendSocketRequest)
func SendSocketRequest(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
 // emit to the Node.js app
}

1 个答案:

答案 0 :(得分:1)

我不能保证它会工作,我没有测试这段代码。但它看起来像:

package main

import (
    "net"
    "os"
    "fmt"
    "io/ioutil"
)

func checkError(err error) {
    if err != nil {
        panic(err)
    }
}

func main() {

    tcpAddr, err := net.ResolveTCPAddr("tcp4", "localhost:4000")
    checkError(err)

    conn, err := net.DialTCP("tcp", nil, tcpAddr)
    checkError(err)

    _, err = conn.Write([]byte("Some data written to the server\n"))
    checkError(err)

    result, err := ioutil.ReadAll(conn)
    checkError(err)
    fmt.Println("Result is: ")
    fmt.Println(string(result))

    os.Exit(0)
}

您应该阅读有关 TCP 连接的更多信息。这是一个简单的结构,它能够从套接字 Write 到或 Read

请在此处查看更多示例并分析代码:https://golang.org/pkg/net/