我是HTML5和node.js的新手。我正在尝试创建一个非常基本的客户端 - 服务器应用程序。这是代码。
服务器端(node.js):
var net = require('net');
var server = net.createServer(function(c) {
console.log('client connected');
c.setEncoding('utf8');
c.on('end', function() {
console.log('client disconnected');
});
c.on('data', function(data) {
console.log(data);
c.write("Got it");
});
});
server.listen(9998);
客户端(websockets):
<!DOCTYPE html>
<html>
<head>
<script>
try {
var ws = new WebSocket('ws://127.0.0.1:9998');
ws.onopen = function() {
ws.send("Message to send");
alert("Message is sent...");
};
ws.onmessage = function (evt) {
var message = evt.data;
alert("Message is received: " + message);
};
ws.onclose = function() {
alert("Connection is closed...");
};
} catch (err) {
alert(err.message);
}
</script>
</head>
<body>
</body>
</html>
据我了解,客户端应连接到服务器,发送“要发送的消息”,服务器应回复“得到它”。相反,服务器接收的是客户端html页面的http GET请求,并且不会触发任何客户端回调。我错过了什么?
答案 0 :(得分:0)
你缺少WebSocket的关键,它的TCP但不是原始的TCP,建立连接,客户端必须首先发送HTTP请求,然后服务器将协议切换到websockets,但是记住websocket不是原始TCP,有数据包和其他自定义标头。
要保存自己一段时间,请尝试https://github.com/LearnBoost/Socket.IO/或其他websocket图书馆https://github.com/joyent/node/wiki/Modules。