Ormuco
  • Solutions
    • Decentralized IaaS
    • Edge PaaS
    • Infrastructure Provisioning
    • Virtual SysAdmin
  • Why Ormuco?
    • Our Partners
    • Support
    • Use Cases
  • Pricing
  • About
    • About Us
    • Careers
    • Legal
  • Request a Demo
  • fr_CAFR
Ormuco
  • Solutions
    • Decentralized IaaS
    • Edge PaaS
    • Infrastructure Provisioning
    • Virtual SysAdmin
  • Why Ormuco?
    • Our Partners
    • Support
    • Use Cases
  • Pricing
  • About
    • About Us
    • Careers
    • Legal
  • Request a Demo
  • fr_CAFR

How to Set Up Ambassador with Socket.io

byYulong Song inDevelopers Corner posted onJuly 18, 2019
0
0
How to Set Up Ambassador with Socket.io

Long story short: I need events in my application.

A little bit more about the project: I’m building a large-scale web application with micro-service architecture. We use Kubernetes to deploy our micro-services with Ambassador acting as the gateway. Everything works great until I need to have a prefix for my Socket.io micro-service.

As usual, I create my service yaml like this:

— -
apiVersion: v1
kind: Service
metadata:
 name: test-socket
 annotations:
 getambassador.io/config: |
 — -
 apiVersion: ambassador/v1
 kind: Mapping
 name: test_socket_mapping
 prefix: /test/
 service: test-socket
 timeout_ms: 20000
 use_websocket: true
spec:
 selector:
 app: test-socket
 ports:
 — name: first
 protocol: TCP
 port: 443
 targetPort: 8000
 — name: second
 protocol: TCP
 port: 80
 targetPort: 8000

Also the deployment yaml like this:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-socket
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: test-socket
    spec:
      containers:
      - name: spiderkube-event-container
        image: sylhero/test-socket
        env:
        - name: NODE_ENV
          value: "development"
        imagePullPolicy: Always
        ports:
        - containerPort: 8000
        livenessProbe:
          tcpSocket:
            port: 8000
          initialDelaySeconds: 30
          periodSeconds: 10
          successThreshold: 1

Life is good. All I need to do is connect my newly deployed test-socket micro-service with my socket client.

I have a simple test client like this:

const
    io = require("socket.io-client"),
    ioClient = io.connect("https://dev.test.io/test"); 

What I expect to see on the pod log is something that says “connection success” or “receiving request from 1.1.1.1”, etc. However, I don’t see anything on the pod log. Everything works fine on my local! After I spent a whole day looking into this, I finally figured out:

It’s the client path.

I updated my test client code like this:

const
    io = require("socket.io-client"),
    ioClient = io.connect("https://dev.test.io", {
     path: "/test/socket.io/"
    });

Voila! Now it works like a charm!

Ambassador is a great gateway for Kubernetes but it’s also very new as a result, documentation is always in need. Hopefully, my small article can contribute to it and help people who are doing the same thing with Ambassador.

Source code link: https://github.com/sylhero/test-socket

This article was originally published on Medium.

OpenStack Summit

Share:
Yulong Song

Yulong leads the team that’s developing Ormuco's dynamic application deployment platform, with responsibilities in front-end development and DevOps. Yulong has previously worked as a Full-Stack Developer at Ormuco. He graduated with a Master of Computer Science from Concordia University and a Bachelor of Management Science from University of Shanghai for Science and Technology.

Previous

A Quickstart Guide to Deploying Qinling in Production

Next

Currying Functions in JavaScript, Recursively

Keep on reading

Currying Functions in JavaScript, Recursively
July 25, 2019
Currying Functions in JavaScript, Recursively
No Comments
A Quickstart Guide to Deploying Qinling in Production
July 11, 2019
A Quickstart Guide to Deploying Qinling in Production
No Comments
Making a React application with reverse proxy and environment-awareness
August 1, 2019
Making a React application with reverse proxy and environment-awareness
No Comments

Search

Categories

  • Business
  • Developers Corner
  • Press Releases
  • Technology

Ormuco Inc.

Ormuco's virtual user interface runs any application by bypassing processing on end-user device operating systems and cloud computing. With Ormuco, you can launch all your apps through a single platform that’s safer and faster than using apps on your device and in the cloud

Request a Demo

Company

  • Who Is Ormuco
  • Why Choose Ormuco
  • Newsroom
  • Careers

Solutions

  • Decentralized IaaS
  • Edge PaaS
  • Infrastructure Provisioning
  • Virtual SysAdmin

Legal

  • Privacy Policy
  • Pricing

Get in Touch

  • info@ormuco.com
© 2020 Ormuco Inc.