We have python application that communicates with Apple Push Notification Service (APNS) for
sending push notifications
gathering information about devices unreachable to push notifications (Feedback Service)
Both cases require opening a socket connection to APNS and
sending a package that contains one or more notifications as a payload
querying the socket for ids of unreachable devices.
While sending works smoothly, it seems that we are unable to receive anything from the opened socket. Has anybody encountered a similar problem with Heroku? On local environment everything works fine.
Unfortunately, Heroku doesn't allow other than HTTP traffic to be handled by your application. It is a common restriction for PaaS services.
There is an addon, however, called Ruppell's Sockets that allows you to receive TCP traffic. Basically what it does is just listens for TCP connections on its own socket and then forwards the data to your application. It is currently in Beta, and I want to warn you that I currently have serious issues with it on my project. The outgoing traffic often doesn't get to a client. So, if possible, deploy somewhere else where you can assure more clear TCP environment.
Related
I am using paramiko to create a SFTP server. I have succeeded in uploading and downloading files to and from server on client request.But, I need to send a file from server to client whenever I need without client request. So, instead of breaking my head on making server send a file to client I want to make both machines act as both server and client in different ports so that when I need to send a file from machine A to B I can just Upload it to the SFTP server running on that port. Is this hypothesis possible?
You already know that you cannot send a file from an server to a client:
Can I send a file from SFTP Server to the Client without any request from it?
(The question on Server Fault has been deleted)
To answer your port question:
You do not care about client's port. It is automatically assigned to any available port, without you ever needing to know its value. In general, that's true for any TCP/IP connection, not only SFTP.
So you can just run SFTP server on both machines on the standard port 22. And use your client code on the other machine to connect to it.
I have a ZMQ server listening on port 12345 TCP. When another server connects on that port locally or via VM it works fine, but if I try from a remote server that has to go through port forwarding on my Fios firewall it just bombs. The packets are showing up in Wireshark but ZMQ just ignores them. Is there anyway to get past this?
You shouldn't be able to bind more than once to the same port number, either from the same process or another.
ZMQ should give a failure when you issue bind with a port number already in use. Are you checking return codes?
Okay I'm a bit new to network programming. We have a site running over a hosted network with a static IP. We want to send some information to the client's PC who connects or logs into the website. Normal sockets are not working as we're getting an error 'refusing connections'. The sockets work in the same subnet but not over internet. How do we connect to the client's computer via server. Are there any libraries for that? Plus the server needs to serve multiple clients who are connected.
I wrote some code to connect to APNs and it works great on my local machine. But when I upload and try to run it on my bluehost server it just takes a long time and then times out. After further testing I can't even get connected to the aps at all. I try
telnet gateway.sandbox.push.apple.com 2195
Connection timed out
I am thinking it has something to do with my bluehost configuration. I have a dedicated IP address and have bluehost claims that port 2195 is open. Any ideas on why I might not be able to make a connection?
After talking with tech support a second time the problem was that port 2195 wasn't open for outgoing connections. They got it opened and I am now in business.
I have a NodeJS-socketIO server that has clients listening from JS, PHP & Python. It works like a charm when the communication happens over plain HTTP/WS channel.
Now, when i try to secure this communication, the websocket transport is not working anymore. It falls back to xhr-polling(long polling) transport. Xhr-polling still works for JS client but not on python which purely depends on socket transport.
Things i tried:
On node, Using https(with commercial certificates) instead of http - Works good for serving pages via Node but not for socketIO
Proxy via HAProxy (1.15-dev19). From HTTPS(HAProxy) to HTTP(Node). Couldn't get Websocket transport working and it falls back to xhr-polling on JS. Python gets 502 on handshake.
Proxy via STunnel (for HTTPS) -> HAProxy(Websocket Proxy) -> Node(SocketIO) - This doesnt work either. Python client still gets 502 on handshake.
Proxy via Stunnel(HTTPS) -> Node(SocketIO) - This doesnt work too. Not sure if STunnel support websocket proxy
node-http-proxy : Throws 500(An error has occurred: {"code":"ECONNRESET"}) on websocket and falls back to xhr-polling
Im sure its a common use case and there is a solution exist. Would really appreciate any help.
Thanks in advance!
My case seems to be a rare one. I built this whole environment on a EC2 instance based on Amazon Linux. As almost all the yum packages are not up to date, i had to install pretty much every yum packages from source. By doing so i could have missed configuration unchanged/added. Or HAProxy required lib could have been not the latest.
In any case, i tried building the environment again on ubuntu 12.04 based EC2 instance. HAProxy worked like a charm with a bit of configuration tweaks. I can now connect my SocketIO server from JS, Python & PHP over SSL without any problem. I could also create a Secured TCP Amazon ELB that listens on 443 and proxy it to non-standard port (8xxx).
Let me know if anyone else encounters a similar problem, I will be happy to help!