Websocket Server App Mac 10.15

We are developing a launchd daemon that will communicate with a remote server via a WebSocket. On 10.15 we are using the native WebSocket API NSURLSessionWebSocketTask. The daemon opens the WebSocket connection to the remote server and can send a message to the remote server and get a reply back. The problem we are encountering is that the remote server can not send a messages to the daemon over the WebSocket if the server is the one initiating the communications. The daemon never receives those messages.

  1. C# Websocket Server
  2. Python Websocket Server
  3. Websocket Server Java


From macOS 10.15+, wine 32x is not supported. MacOS version $ make mac Linux x86-64 version $ make linux Packaging as zip files. Note: this command only works on macOS, because packaging uses ditto, that supports both PKZIP and compressed CPIO format. Note: Packaging usually performs right after app building.

What is really strange is that if we move the exact same code into a Application the WebSocket messages work as expected (i.e. either end can initate communication over the established WebSocket) so I know the remote server is working and it is not a firewall issue.


Is there anything special needed to make WebSockets work with a Launchd daemon?

  • Docker Tutorial
  • Docker Useful Resources
  • Selected Reading

C# Websocket Server

We have already learnt how to use Docker File to build our own custom images. Now let’s see how we can build a web server image which can be used to build containers.

In our example, we are going to use the Apache Web Server on Ubuntu to build our image. Let’s follow the steps given below, to build our web server Docker file.

Step 1 − The first step is to build our Docker File. Let’s use vim and create a Docker File with the following information.

The following points need to be noted about the above statements −

Linux
  • We are first creating our image to be from the Ubuntu base image.

  • Next, we are going to use the RUN command to update all the packages on the Ubuntu system.

  • Next, we use the RUN command to install apache2 on our image.

  • Next, we use the RUN command to install the necessary utility apache2 packages on our image.

  • Next, we use the RUN command to clean any unnecessary files from the system.

  • The EXPOSE command is used to expose port 80 of Apache in the container to the Docker host.

  • Finally, the CMD command is used to run apache2 in the background.

Now that the file details have been entered, just save the file.

Step 2 − Run the Docker build command to build the Docker file. It can be done using the following command −

We are tagging our image as mywebserver. Once the image is built, you will get a successful message that the file has been built.

Step 3 − Now that the web server file has been built, it’s now time to create a container from the image. We can do this with the Docker run command.

Python Websocket Server

The following points need to be noted about the above command −

  • The port number exposed by the container is 80. Hence with the –p command, we are mapping the same port number to the 80 port number on our localhost.

  • The –d option is used to run the container in detached mode. This is so that the container can run in the background.

Websocket Server Java

If you go to port 80 of the Docker host in your web browser, you will now see that Apache is up and running.