1.``String`` - The subscription, you want to subscribe to.
2.``Mixed`` - (optional) Optional additional parameters, depending on the subscription type.
3.``Function`` - (optional) Optional callback, returns an error object as first parameter and the result as second. Will be called for each incoming subscription.
.._eth-subscription-return:
-------
Returns
-------
``EventEmitter`` - A Subscription instance
-``subscription.id``: The subscription id, used to identify and unsubscribing the subscription.
-``subscription.unsubscribe([callback])``: Unsubscribes the subscription and returns `TRUE` in the callback if successfull.
-``on("data")`` returns ``Object``: Fires on each incoming log with the log object as argument.
-``on("changed")`` returns ``Object``: Fires on each log which was removed from the blockchain. The log will have the additional property ``"removed: true"``.
-``on("error")`` returns ``Object``: Fires when an error in the subscription occours.
----------------
Callback returns
----------------
-``Mixed`` - depends on the subscription, see the different subscriptions for more.
1.``String`` - ``"pendingTransactions"``, the type of the subscription.
2.``Function`` - (optional) Optional callback, returns an error object as first parameter and the result as second. Will be called for each incoming subscription.
-------
Returns
-------
``EventEmitter``: An :ref:`subscription instance <eth-subscription-return>` as an event emitter with the following events:
-``"data"`` returns ``Object``: Fires on each incoming pending transaction.
-``"error"`` returns ``Object``: Fires when an error in the subscription occours.
For the structure of the returned object see :ref:`web3.eth.getTransaction() return values <eth-gettransaction-return>`.
----------------
Callback returns
----------------
1.``Object|Null`` - First parameter is an error object if the subscription failed.
2.``Object`` - The block header object like above.
-------
Example
-------
..code-block:: javascript
var subscription = web3.eth.subscribe('pendingTransactions', function(error, result){
Subscribes to incoming block headers. This can be used as timer to check for changes on the blockchain.
----------
Parameters
----------
1.``String`` - ``"newBlockHeaders"``, the type of the subscription.
2.``Function`` - (optional) Optional callback, returns an error object as first parameter and the result as second. Will be called for each incoming subscription.
-------
Returns
-------
``EventEmitter``: An :ref:`subscription instance <eth-subscription-return>` as an event emitter with the following events:
-``"data"`` returns ``Object``: Fires on each incoming block header.
-``"error"`` returns ``Object``: Fires when an error in the subscription occours.
The structure of a returned block header is as follows:
Subscribe to syncing events. This will return an object when the node is syncing and when its finished syncing will return ``FALSE``.
----------
Parameters
----------
1.``String`` - ``"syncing"``, the type of the subscription.
2.``Function`` - (optional) Optional callback, returns an error object as first parameter and the result as second. Will be called for each incoming subscription.
-------
Returns
-------
``EventEmitter``: An :ref:`subscription instance <eth-subscription-return>` as an event emitter with the following events:
-``"data"`` returns ``Object``: Fires on each incoming sync object as argument.
-``fromBlock`` - ``Number``: The number of the earliest block. By default ``null``.
-``address`` - ``String``: An address or a list of addresses to only get logs from particular account(s).
-``topics`` - ``Array``: An array of values which must each appear in the log entries. The order is important, if you want to leave topics out use ``null``, e.g. ``[null, '0x00...']``. You can also pass another array for each topic with options for that topic e.g. ``[null, ['option1', 'option2']]``
3.``callback`` - ``Function``: (optional) Optional callback, returns an error object as first parameter and the result as second. Will be called for each incoming subscription.
``EventEmitter``: An :ref:`subscription instance <eth-subscription-return>` as an event emitter with the following events:
-``"data"`` returns ``Object``: Fires on each incoming log with the log object as argument.
-``"changed"`` returns ``Object``: Fires on each log which was removed from the blockchain. The log will have the additional property ``"removed: true"``.
-``"error"`` returns ``Object``: Fires when an error in the subscription occours.
For the structure of a returned event ``Object`` see :ref:`web3.eth.getPastEvents return values <eth-getpastlogs-return>`.
----------------
Callback returns
----------------
1.``Object|Null`` - First parameter is an error object if the subscription failed.
2.``Object`` - The log object like in :ref:`web3.eth.getPastEvents return values <eth-getpastlogs-return>`.