mirror of
https://github.com/taigrr/nats.docs
synced 2025-01-18 04:03:23 -08:00
Cleaned up how examples are handled to reduce thrashing in git
Examples are no longer in the final html as solo files, only in their container file
This commit is contained in:
191
_examples/connect_tls_url.html
Normal file
191
_examples/connect_tls_url.html
Normal file
@@ -0,0 +1,191 @@
|
||||
|
||||
<div class="tab-wrap">
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_url_go" name="connect_tls_url" class="tab" checked>
|
||||
|
||||
<label for="connect_tls_url_go" class="api-lang" data-language="go">Go</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_url_java" name="connect_tls_url" class="tab">
|
||||
|
||||
<label for="connect_tls_url_java" class="api-lang" data-language="java">Java</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_url_js" name="connect_tls_url" class="tab">
|
||||
|
||||
<label for="connect_tls_url_js" class="api-lang" data-language="js">JavaScript</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_url_py" name="connect_tls_url" class="tab">
|
||||
|
||||
<label for="connect_tls_url_py" class="api-lang" data-language="py">Python</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_url_ruby" name="connect_tls_url" class="tab">
|
||||
|
||||
<label for="connect_tls_url_ruby" class="api-lang" data-language="ruby">Ruby</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_url_ts" name="connect_tls_url" class="tab">
|
||||
|
||||
<label for="connect_tls_url_ts" class="api-lang" data-language="ts">TypeScript</label>
|
||||
|
||||
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_url_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_tls_url/main.go#L10-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect("localhost",
|
||||
nats.Secure(),
|
||||
nats.RootCAs("resources/certs/ca.pem")) // May need this if server is using self-signed certificate
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer nc.Close()
|
||||
|
||||
// Do something with the connection
|
||||
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_url_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectTLSURL.java#L18-80"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class SSLUtils2 {
|
||||
public static String KEYSTORE_PATH = "src/main/resources/keystore.jks";
|
||||
public static String TRUSTSTORE_PATH = "src/main/resources/cacerts";
|
||||
public static String STORE_PASSWORD = "password";
|
||||
public static String KEY_PASSWORD = "password";
|
||||
public static String ALGORITHM = "SunX509";
|
||||
|
||||
public static KeyStore loadKeystore(String path) throws Exception {
|
||||
KeyStore store = KeyStore.getInstance("JKS");
|
||||
BufferedInputStream in = new BufferedInputStream(new FileInputStream(path));
|
||||
|
||||
try {
|
||||
store.load(in, STORE_PASSWORD.toCharArray());
|
||||
} finally {
|
||||
if (in != null) {
|
||||
in.close();
|
||||
}
|
||||
}
|
||||
|
||||
return store;
|
||||
}
|
||||
|
||||
public static KeyManager[] createTestKeyManagers() throws Exception {
|
||||
KeyStore store = loadKeystore(KEYSTORE_PATH);
|
||||
KeyManagerFactory factory = KeyManagerFactory.getInstance(ALGORITHM);
|
||||
factory.init(store, KEY_PASSWORD.toCharArray());
|
||||
return factory.getKeyManagers();
|
||||
}
|
||||
|
||||
public static TrustManager[] createTestTrustManagers() throws Exception {
|
||||
KeyStore store = loadKeystore(TRUSTSTORE_PATH);
|
||||
TrustManagerFactory factory = TrustManagerFactory.getInstance(ALGORITHM);
|
||||
factory.init(store);
|
||||
return factory.getTrustManagers();
|
||||
}
|
||||
|
||||
public static SSLContext createSSLContext() throws Exception {
|
||||
SSLContext ctx = SSLContext.getInstance(Options.DEFAULT_SSL_PROTOCOL);
|
||||
ctx.init(createTestKeyManagers(), createTestTrustManagers(), new SecureRandom());
|
||||
return ctx;
|
||||
}
|
||||
}
|
||||
|
||||
public class ConnectTLSURL {
|
||||
public static void main(String[] args) {
|
||||
|
||||
try {
|
||||
SSLContext.setDefault(SSLUtils2.createSSLContext()); // Set the default context
|
||||
Options options = new Options.Builder().
|
||||
server("tls://localhost:4222"). // Use the TLS protocol
|
||||
build();
|
||||
Connection nc = Nats.connect(options);
|
||||
|
||||
// Do something with the connection
|
||||
|
||||
nc.close();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_url_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/tls_samples.js#L26-31"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
|
||||
url: "tls://demo.nats.io:4443",
|
||||
tls: true
|
||||
});
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_url_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_tls_url.py#L1-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">import asyncio
|
||||
import ssl
|
||||
import certifi
|
||||
from nats.aio.client import Client as NATS
|
||||
from nats.aio.errors import ErrTimeout
|
||||
|
||||
async def run(loop):
|
||||
nc = NATS()
|
||||
|
||||
# If using Python 3.7 in OS X and getting SSL errors, run first:
|
||||
#
|
||||
# /Applications/Python\ 3.7/Install\ Certificates.command
|
||||
#
|
||||
# Setting the tls as the scheme will use same defaults as `ssl.create_default_context()`
|
||||
#
|
||||
await nc.connect("tls://demo.nats.io:4443", loop=loop)
|
||||
|
||||
async def message_handler(msg):
|
||||
subject = msg.subject
|
||||
reply = msg.reply
|
||||
data = msg.data.decode()
|
||||
print("Received a message on '{subject} {reply}': {data}".format(
|
||||
subject=subject, reply=reply, data=data))
|
||||
|
||||
# Simple publisher and async subscriber via coroutine.
|
||||
sid = await nc.subscribe("foo", cb=message_handler)
|
||||
await nc.flush()
|
||||
|
||||
# Stop receiving after 2 messages.
|
||||
await nc.auto_unsubscribe(sid, 2)
|
||||
await nc.publish("foo", b'Hello')
|
||||
await nc.publish("foo", b'World')
|
||||
await nc.publish("foo", b'!!!!!')
|
||||
await asyncio.sleep(1, loop=loop)
|
||||
await nc.close()
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_url_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_tls_url.rb#L3-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">EM.run do
|
||||
|
||||
# In order to use TLS with the Ruby NATS client, use the :tls option
|
||||
# when customizing the connection with an empty block.
|
||||
options = {
|
||||
:servers => [
|
||||
'nats://demo.nats.io:4443',
|
||||
],
|
||||
:tls => {}
|
||||
}
|
||||
|
||||
NATS.connect(options) do |nc|
|
||||
puts :connected
|
||||
end
|
||||
end
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_url_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/tls_samples.ts#L26-33"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
|
||||
let nc = await connect({
|
||||
url: "tls://demo.nats.io:4443"
|
||||
});
|
||||
|
||||
nc.close();
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user