David Glasser b9f2bb255d Don't allow websockets to indefinitely wait for DDP handshake
In general, we try to avoid allowing TCP connections to be open with no
traffic on it indefinitely.  We place timeouts on incoming HTTP
connections in webapp_server.js (which we adjust to longer values when
there's an HTTP request pending), and once a DDP connection is fully
established we require heartbeats.

However, if the incoming connection is a websocket, the faye-websocket
package used by SockJS calls setTimeout(0) on the underlying socket when
it initializes the WebSocket object:

https://github.com/faye/faye-websocket-node/blob/3148348a3/lib/faye/websocket/api.js#L111

So if a client does the WebSocket handshake with the server but never
sends a valid DDP connect message, the socket can be held open
indefinitely. (To add insult to injury, a 1MB Buffer object is retained
on such sockets due to something in the faye-websocket code, at least on
older versions of Node like 0.10.)

This commit restores a timeout on the socket for this in-between period.

(We actually saw this issue in production on the Meteor Developer
Accounts server --- hundreds of such broken connections would accumulate
over time.  This may be triggered by a particular setup we use involving
proxies for the accounts server, or it may be a more generally
applicable issue.)
2016-11-23 13:10:58 -08:00
2016-02-24 09:59:05 -08:00
2015-03-17 12:06:10 -07:00
2015-01-07 14:42:53 -05:00
2016-06-16 19:13:25 +02:00
2015-08-07 12:44:46 -07:00
2015-07-31 10:56:11 -07:00
2016-10-04 18:34:28 -04:00
2016-11-10 17:50:58 -05:00
2016-11-17 16:23:04 -05:00
2016-05-03 14:47:02 -07:00
2016-01-02 12:37:17 +00:00
2015-07-31 18:38:25 -07:00
2016-06-24 13:57:47 +10:00

Meteor

TravisCI Status CircleCI Status

Meteor is an ultra-simple environment for building modern web applications.

With Meteor you write apps:

  • in pure JavaScript
  • that send data over the wire, rather than HTML
  • using your choice of popular open-source libraries

Try the getting started tutorial.

Next, read the guide or the reference documentation at http://docs.meteor.com/.

Quick Start

On Windows, simply go to https://www.meteor.com/install and use the Windows installer.

On Linux/macOS, use this line:

curl https://install.meteor.com/ | sh

Create a project:

meteor create try-meteor

Run it:

cd try-meteor
meteor

Slow Start (for developers)

If you want to run on the bleeding edge, or help contribute to Meteor, you can run Meteor directly from a Git checkout using these steps:

  1. Clone from GitHub

    $ git clone --recursive https://github.com/meteor/meteor.git
    $ cd meteor
    
    Important note about Git submodules!

    This repository uses Git submodules. If you clone without the --recursive flag, re-fetch with git pull or experience "Depending on unknown package" errors, run the following in the repository root to sync things up again:

    $ git submodule update --init --recursive
    
  2. (Optional) Compile dependencies

    This optional step requires a C and C++ compiler, autotools, and scons. If this step is skipped, Meteor will simply download pre-built binaries.

    To build everything from scratch (node, npm, mongodb, etc.) run the following:

    $ ./scripts/generate-dev-bundle.sh # OPTIONAL!
    
  3. Run a Meteor command to install dependencies

    If you did not compile dependencies above, this will also download the binaries.

    $ ./meteor --help
    
  4. Ready to Go!

    Your local Meteor checkout is now ready to use! You can use this ./meteor anywhere you would normally call the system meteor. For example,:

    $ cd my-app/
    $ /path/to/meteor-checkout/meteor run
    

    Note: When running from a git checkout, you cannot pin apps to specific Meteor releases or change the release using --release.

Uninstalling Meteor

Aside from a short launcher shell script, Meteor installs itself inside your home directory. To uninstall Meteor, run:

rm -rf ~/.meteor/
sudo rm /usr/local/bin/meteor

On Windows, just run the uninstaller from your Control Panel.

Developer Resources

Building an application with Meteor?

Interested in contributing to Meteor?

We are hiring! Visit https://www.meteor.com/jobs to learn more about working full-time on the Meteor project.

Description
No description provided
Readme MIT 202 MiB
Languages
JavaScript 91.1%
TypeScript 3.9%
Shell 0.9%
Java 0.7%
Swift 0.7%
Other 2.5%