我有一个 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
}
答案 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/