Exemplo n.º 1
0
    websocket.on('open', function open() {
      var spark = new Spark(
          req.headers          // HTTP request headers.
        , req                  // IP address location.
        , parse(req.url).query // Optional query string.
        , null                 // We don't have an unique id.
        , req                  // Reference to the HTTP req.
      );

      spark.on('outgoing::end', function end() {
        if (websocket) websocket.close();
      }).on('outgoing::data', function write(data) {
        if ('string' === typeof data) return websocket.send(data);

        websocket.send(data, { binary: true });
      });

      websocket.on('error', spark.emits('error'));
      websocket.on('message', spark.emits('data', function parse(evt) {
        return evt.data;
      }));
      websocket.on('close', spark.emits('end', function close() {
        websocket.removeAllListeners();
        websocket = null;
      }));
    });
Exemplo n.º 2
0
	.on("upgrade", function (request, socket, body) {
		if (!WebSocket.isWebSocket(request)) {
			return;
		}
		var ws = new WebSocket(request, socket, body);
		ws.on("message", router);
		ws.on("close", function(event) {
			ws = null;
		});
	})
Exemplo n.º 3
0
	server.on("upgrade", function(request, socket, body){
		if (WebSocket.isWebSocket(request)){
			var ws = new WebSocket(request, socket, body);
			var p = new player(sender,"websocket");
			p.wssocket = ws;
			p.connected();
			
			ws.on("message", function(event){
				p.recive(event.data);
			});
			ws.on("close", function(event){
				p.disconnected();
			});
		}
	});
Exemplo n.º 4
0
  this.on('upgrade', function upgrade(req, socket, head) {
    if (!Faye.isWebSocket(req)) return socket.destroy();

    var websocket = new Faye(req, socket, head, null, options);

    //
    // The WebSocket handshake is complete only when the `open` event is fired.
    //
    websocket.on('open', function open() {
      var spark = new Spark(
          req.headers          // HTTP request headers.
        , req                  // IP address location.
        , parse(req.url).query // Optional query string.
        , null                 // We don't have an unique id.
        , req                  // Reference to the HTTP req.
      );

      spark.on('outgoing::end', function end() {
        if (websocket) websocket.close();
      }).on('outgoing::data', function write(data) {
        if ('string' === typeof data) return websocket.send(data);

        websocket.send(data, { binary: true });
      });

      websocket.on('error', spark.emits('error'));
      websocket.on('message', spark.emits('data', function parse(evt) {
        return evt.data;
      }));
      websocket.on('close', spark.emits('end', function close() {
        websocket.removeAllListeners();
        websocket = null;
      }));
    });
  });
Exemplo n.º 5
0
    function startWebSockets() {
      var wss = new WebSocketServer(request, socket, body);

      wss.id = crypto.randomBytes(16).toString('hex');

      wss.on('open', function () {
        var rejected = false;
        var rejectReason;

        function reject(reason) {
          rejected = true;
          if (reason) rejectReason = reason;
        }

        store.emit('client', wss, reject);
        if (rejected) {
          // Tell the client to stop trying to connect
          wss.close(1001, rejectReason);
          return;
        }

        var stream = createWebSocketStream(wss, store.logger);
        var agent = store.shareClient.listen(stream, wss.upgradeReq);
        if (request.session) agent.connectSession = request.session;
        store.emit('share agent', agent, stream);
      });
    }
Exemplo n.º 6
0
  server.on('upgrade', function(request, socket, body) {
    var ws;

    if (WebSocket.isWebSocket(request)) {
      ws = new WebSocket(request, socket, body);

      onSourceCodeChange.subscribe(notify);

      ws.on('message', onMessage);

      ws.on('close', function(event) {
        ws = null;
        onSourceCodeChange.unsubscribe(notify);
      });
    }

    function notify () {
      ws.send(restartNotification);
    }
  });
Exemplo n.º 7
0
      this.server.on('upgrade', (req, socket, body) => {
        if(!WebSocket.isWebSocket(req)) return;

        console.log('接收到来自客户端的WebSocket连接');

        if(typeof this.ws === 'string') {
          // 走代理的方式
          wrapRouter.dealWithWs(req, socket, body, this.ws, this.https);
        } else if(typeof this.ws === 'object') {
          let ws = new WebSocket(req, socket, body);

          ws.on('open', () => {this.ws.open&&this.ws.open.call(null, ws)});

          ws.on('message', (evt) => {this.ws.message&&this.ws.message.call(null, evt.data)});

          ws.on('close', (evt) => {
            this.ws.close&&this.ws.close.call(null, evt);
            ws = null;
          });
        }
      });
Exemplo n.º 8
0
server.on('upgrade', function(request, socket, body) {
  if (WebSocket.isWebSocket(request)) {
    var ws = new WebSocket(request, socket, body);
    // console.log(ws);
    logger.info("Open new connection: version=%s, url=%s, readyState=%d", ws.version, ws.url, ws.readyState);

    ws.on('message', function(event) {
      logger.info("Received: %s", event.data);
      var obj = {
        library : "faye-websocket",
        time : new Date(),
        text : event.data
      };
      ws.send(JSON.stringify(obj));
    });

    ws.on('close', function(event) {
      logger.info("Close connection: code=%s, reason=%s", event.code, event.reason);
      ws = null;
    });
  }
});
Exemplo n.º 9
0
    var onupgrade = function (req, socket, body) {

        if (webSocket.isWebSocket(req)) {

            var ws = new webSocket(req, socket, body, null, {ping: 10});

            req.path = exports.getNormalizedPath(req.url.split('?')[0]);
            ws.req = fillReq(req, ws);
            if (!req) {
                return;
            }

            ws.onopen = function (ev) {
                if (serverEvents.open) {
                    serverEvents.open(helpers.ConnectionType.WebSocket, ev.currentTarget, ev.currentTarget.req, ev);
                }
            };

            ws.on('message', function (ev) {
                if (serverEvents.message) {
                    serverEvents.message(helpers.ConnectionType.WebSocket, ev.currentTarget, ev.currentTarget.req, ev);
                }
            });

            ws.on('error', function (ev) {
                if (serverEvents.error) {
                    serverEvents.error(helpers.ConnectionType.WebSocket, ev.currentTarget, ev.currentTarget.req, ev);
                }
            });

            ws.on('close', function (ev) {
                if (serverEvents.close) {
                    serverEvents.close(helpers.ConnectionType.WebSocket, ev.currentTarget, ev.currentTarget.req, ev);
                }
                ws = null;
            });
        }
    }
Exemplo n.º 10
0
server.on('upgrade', function(request, socket, body) {
	if (WebSocket.isWebSocket(request)) {
		var ws = new WebSocket(request, socket, body),
			room, thisroom, sid = + new Date() + Math.floor((Math.random() * 10) * 1000);
		ws.sid = sid;
		ws.status_hasVideo = false;
		room = rooms(ws, 'audioTest');
		thisroom = roomList['audioTest'];
		userList[sid] = ws;
		console.log('new one in');
		ws.on('message', function(e) {
			var data = e.data;
			room.sendexceptme(data);
		});
		ws.on('close', function(e) {
			room.sendexceptme(tostring({actname: 'leave', actval: sid}));
			room.remove(sid);
			delete userList[sid];
			console.log('close', e.code, e.reason);
			ws = null;
		});
	}
});
Exemplo n.º 11
0
  server.on('upgrade', function(request, socket, body) {
    var ws;
    var ind;

    if (WebSocket.isWebSocket(request)) {
      ws = new WebSocket(request, socket, body);
      ind = sockets.push(ws) - 1;

      onSourceCodeChange.subscribe(notify);

      ws.send(JSON.stringify({ start: true, url: customFrameURL || '/run' }));
      ws.on('message', onMessage);
      ws.on('close', function(event) {
        ws = null;
        sockets[ind] = undefined;
        onSourceCodeChange.unsubscribe(notify);
      });
    }

    function notify () {
      ws.send(restartNotification);
    }

  });
Exemplo n.º 12
0
  server.on('upgrade', function (request, socket, body) {
    if (WebSocket.isWebSocket(request)) {
      var ws = new WebSocket(request, socket, body);
      var session_id = "" + new Date().getTime();
      subscriptions[session_id] = {};

      function sendMessage(data) {
        ws.send(EJSON.stringify(data));
      }

      ws.on('message', function(event) {
        var data = JSON.parse(event.data);

        switch (data.msg) {

        case "connect":

          sendMessage({
            msg: "connected",
            session: session_id
          });

          break;

        case "method":

          if (data.method in methods) {
            Promise.resolve(methods[data.method].apply(this, data.params))
            .then(function(result){
              sendMessage({
                msg: "result",
                id: data.id,
                result: result
              });

              sendMessage({
                msg: "updated",
                id: data.id
              })
            })
            .catch(function(e){
              console.log('ddp server error', e.message);
              sendMessage({
                id: data.id,
                error: {
                  error: 500,
                  reason: e.message,
                  errorType: "Meteor.Error"
                }
              });
            });

          } else {
              console.log("Error method " + data.method + " not found");

              sendMessage({
                id: data.id,
                error: {
                  error: 404,
                  reason: "Method not found",
                  errorType: "Meteor.Error"
                }
              });
          }
          break;

        case "sub":

          subscriptions[session_id][data.name] = {
            added: function(id, doc) {
              sendMessage({
                msg: "added",
                collection: data.name,
                id: id,
                fields: doc
              })
            },
            changed: function(id, fields, cleared) {
              sendMessage({
                msg: "changed",
                collection: data.name,
                id: id,
                fields: fields,
                cleared: cleared
              })
            },
            removed: function(id) {
              sendMessage({
                msg: "removed",
                collection: data.name,
                id: id
              })
            }
          };

          var docs = collections[data.name];
          for (var id in docs)
            subscriptions[session_id][data.name].added(id, docs[id]);

          sendMessage({
            msg: "ready",
            subs: [data.id]
          });

          break;

        case "ping":

          sendMessage({
            msg: "pong",
            id: data.id
          });

          break;

        default:
        }
      });

      ws.on('close', function(event) {
        delete subscriptions[session_id];
        ws = null;
        session_id = null;
      });
    }
  });
Exemplo n.º 13
0
    server.on('upgrade', function(request, socket, body) {
        function sendMessage(data) {
            ws.send(JSON.stringify(data));
        }

        if (WebSocket.isWebSocket(request)) {
            var ws = new WebSocket(request, socket, body);
            var session_id = new Date().getTime();

            ws.on('message', function(event) {
                var data = JSON.parse(event.data);

                switch (data.msg) {
                    case "connect":
                        {
                            sendMessage({
                                server_id: 0
                            });

                            sendMessage({
                                msg: "connected",
                                session_id: session_id
                            });

                            break;
                        }

                    case "method":
                        {
                            if (data.method in methods) {
                                try {
                                    var result = methods[data.method].apply(this, data.params);

                                    sendMessage({
                                        result: result,
                                        id: data.id,
                                        msg: "result"
                                    });
                                } catch (e) {
                                    sendMessage({
                                        id: data.id,
                                        error: {
                                            error: 500,
                                            reason: "Internal Server Error",
                                            errorType: "Meteor.Error"
                                        }
                                    });
                                }
                            } else {
                                console.log("Error method " + data.method + " not found");

                                sendMessage({
                                    id: data.id,
                                    error: {
                                        error: 404,
                                        reason: "Method not found",
                                        errorType: "Meteor.Error"
                                    }
                                });
                            }

                            break;
                        }

                    default:
                        {

                        }
                }
            });

            ws.on('close', function(event) {
                console.log('close', event.code, event.reason);
                ws = null;
                session_id = null;
            });
        }
    });