我在客户端文本框输入内容,但是服务器没有回应,为什么? 是因为服务端的 socket版本和 客户端的socket版本不匹配吗?
客户端中,我使用了官方给出的 版本都不行,还是其他问题呢?
cdnjs: https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.7.5/socket.io.min.js
jsDelivr: https://cdn.jsdelivr.net/npm/socket.io-client@4.7.5/dist/socket.io.min.js@4.7.5/dist/socket.io.min.js
unpkg: https://unpkg.com/socket.io-client@4.7.5/dist/socket.io.min.js@4.7.5/dist/socket.io.min.js
</head>
<script src="https://unpkg.com/socket.io-client@4.7.5/dist/socket.io.min.js"></script>
<script src="asset/js/jquery-1.11.3.min.js"></script>
<script>
var socket = io("http://127.0.0.1:8000");
socket.on("reply", function (serverData) {
console.log(serverData)
$("#content").append("<p>答:" + serverData + "<p>")
})
$("#send").click(function () {
var msg = $("#msg").val();
$("#msg").val("");
$("#content").append("<p>问:" + msg + "<p>");
socket.emit("notice", msg);
})
</script>
<body>
<h2>消息列表</h2>
<div id="content"></div>
<div id="inputArea">
<input type="text" id="msg" placeholder="输入问题" />
<button id="send">发送</button>
</div>
</body>
</html>
package main
import (
"fmt"
"log"
"net/http"
socketio "github.com/googollee/go-socket.io"
)
func main() {
server := socketio.NewServer(nil)
server.OnConnect("/", func(c socketio.Conn) error {
c.SetContext("")
fmt.Println("connected:", c.ID())
return nil
})
server.OnEvent("/", "notice", func(c socketio.Conn, msg string) {
fmt.Println("notice:", msg)
c.Emit("reply", "have "+msg)
})
server.OnEvent("/chat", "msg", func(c socketio.Conn, msg string) string {
c.SetContext(msg)
return "recv " + msg
})
server.OnEvent("/", "bye", func(c socketio.Conn) string {
last := c.Context().(string)
c.Emit("bye", last)
c.Close()
return last
})
server.OnError("/", func(c socketio.Conn, e error) {
// server.Remove(s.ID())
fmt.Println("meet error:", e)
})
server.OnDisconnect("/", func(c socketio.Conn, reason string) {
// Add the Remove session id. Fixed the connection & mem leak
// server.Remove(c.ID())
fmt.Println("closed", reason)
})
go server.Serve()
defer server.Close()
http.Handle("/socket.io/", server)
http.Handle("/", http.FileServer(http.Dir("./asset")))
log.Println("Serving at localhost:8000...")
log.Fatal(http.ListenAndServe(":8000", nil))
}