一旦激活,Websocket 本质上是双向的……也就是说,流量可以从任一侧发起
...一旦打开一个 websocket 连接是持久的,所以即使不处理流量也会保持打开状态
这是定义WebSocket服务器端的整个nodejs代码
var websocker_server = function() {
"use strict";
var port = 8888;
console.log('listening on localhost:' + port + '\n');
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: port });
wss.on('connection', function connection(ws) {
ws.send('this message was sent from server side to client');
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
// ---
ws.on("error", function(event) {
var error_msg = "ERROR on on on error : " + event;
console.error(error_msg);
});
// ---
ws.on("close", function() {
console.log("websocket connection close");
});
});
}(); // websocker_server = function()
所以现在我用内联 javascript 显示整个 html,它定义了一个简单的浏览器端 WebSocket 客户端
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>bare bones websocket with nodejs serverside</title>
<script type="text/javascript">
var websocket_connection = (function() {
var web_socket = new WebSocket('ws://127.0.0.1:8888');
web_socket.onopen = function (event) {
web_socket.send("Here's some text client has sent to server upon socket open event!");
};
web_socket.onmessage = function (event) {
console.log(event.data);
}
}()); // websocket_connection
</script>
</head>
<body>
</body>
</html>
首先启动侦听端口 8888 的 nodejs 服务器端...然后从 httpd 服务器运行 html,以便您可以将浏览器指向其代码...浏览器客户端启动 WebSocket 连接,该连接曾经打开然后允许向任一方向发送消息...我建议您首先使用此处概述的文本格式消息来完成此工作,如果需要,如果您的消息开始变得复杂,可能使用 JSON 格式
I posted all this code and supporting instructions as a repo HERE