我是NodeJS的新手 . 假设我有一个使用Golang的websocket包实现的echo服务器:
package main
import (
"code.google.com/p/go.net/websocket"
"log"
"net/http"
)
func EchoServer(ws *websocket.Conn) {
var msg string
websocket.Message.Receive(ws, &msg)
log.Printf("Message Got: %s\n", msg)
websocket.Message.Send(ws, msg)
}
func main() {
http.Handle("/echo", websocket.Handler(EchoServer))
err := http.ListenAndServe(":8082", nil)
if err != nil {
panic(err.Error())
}
}
nodejs客户端代码应该是什么样的?
2 回答
作为WebSocket-Node库的作者,我可以向您保证,您不需要修改WebSocket-Node库代码以便不使用子协议 .
上面的示例代码错误地显示为connect()函数的subprotocol参数传递空字符串 . 如果您选择不使用子协议,则应将JavaScript的空值作为第二个参数传递,或者传递一个空数组(该库能够以降低需求的顺序向远程服务器建议多个支持的子协议),但不是空的串 .
我认为this正是你要找的 . 使用服务器代码的快速示例:
要使其工作,您需要修改
lib/WebSocketCLient.js
中的WebsocketClient代码 . 注释这些行(我机器上的第299-300行):由于某种原因,您提供的websocket库似乎没有发送“Sec-Websocket-Protocol”标头,或者至少客户端找不到它 . 我没有做太多的测试,但是应该在某个地方提交错误报告 .
以下是使用Go客户端的示例: