client.js

var connection = new WebSocket('ws://127.0.0.1:1337')

connection.onopen = function() {}
connection.onerror = function(err) {}
connection.onmessage = function(msg) {}  // 监听接受响应msg后的操作

客户端的接收和发送

  • 接收: onmessage 函数 msg 响应的解包方式是 msg.type === '???' 判断类型,然后读取 msg.data parse 为 json 数据
  • 发送: connection.send(msg)

server.js

var wsServer = new webSocketServer({})

wsServer.on('request', function(request) {
  var connection = request.accept(null, request.origin)
  connection.on('message', function(message) {})
  connection.on('close', function(connection) {})
})

服务端的接收和发送

  • 接收: on('message', function(message)) 函数 message 响应的解包方式是 message.utf8Data (字符串)
  • 发送: clients[i].sendUTF(JSON.stringify({type: '', data: ''})),其中 clients[i] 是一个 connection

特别地:面向客户端数组的断开代码套路是

  • 这是标识: var index = clients.push(connection) - 1 // we need to know client index to remove them on 'close' event
  • 这是断开: clients.splice(index, 1)

client 关键代码

三部曲 + 收发部分

/**
 * Prepare connection variable
 */
window.WebSocket = window.WebSocket || window.MozWebSocket;

if (!window.WebSocket) {
  content.html($('<p>', { text: 'Sorry, but your browser doesn\'t '
                                              + 'support WebSocket'}));
  return;
}

var connection = new WebSocket('ws://127.0.0.1:1337');

/**
 * This function is called every time server broadcast message
 */
connection.onmessage = function(message) {}

/**
 * Send message by listener
 */
input.keydown(function(e) {})
/*
 * The onmessage and listener part is essential
 */
connection.ommessage = function(message) {
    var 接收信息 = JSON.parse(message.data);
}

input.keydown(function(e) {
    connection.send(发送信息);
})

server 关键代码

三部曲 + 收发部分

/**
 * Prepare port and require libraries
 */
var webSocketsServerPort = 1337;

var webSocketServer = require('websocket').server;
var http = require('http');


/**
 * HTTP and webSocket server
 */
var server = http.createServer(function(request, response) {})
server.listen(webSocketsServerPort, function() {
  console.log((new Date()) + " Server is listening on port " + webSocketServerPort);
});

var wsServer = new webSocketServer({
  httpServer: server
});


/**
  * This function is called everytime some tries to connect to the server
  */
wsServer.on('request', function(request) {
    var connection = request.accept(null, request.origin);
    
    connection.on('message', function(message) {});
    connection.on('close', function(connection) {});
})
/**
 * The onmessage part is the essential part
 */
connection.on('message', function(message) {
    var 接收信息 = message.utf8Data;
    var 发送信息 = xx( 接收信息 )
    connection.sendUTF( 发送信息 )
})