- 使用ali的fc。创建http触发器,使用websocket触发。
const WebSocket = require('ws');
const WebSocketServer = WebSocket.Server;
const wss = new WebSocketServer({
host: "0.0.0.0",
port: 9000,
});
wss.on('connection', function (ws, req) {
console.log(`[SERVER] connection()`);
ws.on('message', function (message) {
ws.send(`${message} 11111`, (err) => {
if (err) {
console.log(`[SERVER] error: ${err}`);
}
});
ws.send(`${message} 222`, (err) => {
if (err) {
console.log(`[SERVER] error: ${err}`);
}
});
ws.send(`${message} 333`, (err) => {
if (err) {
console.log(`[SERVER] error: ${err}`);
}
});
})
});
实际触发器调用效果:
package main
import (
"bufio"
"fmt"
"github.com/gorilla/websocket"
"log"
"os"
)
func main() {
dl := websocket.Dialer{
// NetDial: nil,
// NetDialContext: nil,
// NetDialTLSContext: nil,
// Proxy: nil,
// TLSClientConfig: nil,
// HandshakeTimeout: 0,
// ReadBufferSize: 0, // 重要
// WriteBufferSize: 0, // 重要
// WriteBufferPool: nil,
// Subprotocols: nil,
// EnableCompression: false,
// Jar: nil,
}
conn, _, err := dl.Dial("ws://websocket-websocket-wxobdeobpf.cn-hangzhou.fcapp.run", nil) // 返回连接,http响应,错误
if err != nil {
log.Println(err)
return
}
go send(conn)
for {
messageType, content, err := conn.ReadMessage()
if err != nil {
break
}
fmt.Println(messageType, string(content))
}
}
func send(conn *websocket.Conn) {
for {
reader := bufio.NewReader(os.Stdin)
l, _, _ := reader.ReadLine()
conn.WriteMessage(websocket.TextMessage, l)
}
}
超过超时时间,链接就断掉了