Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
I'm looking to create an architecture for my dissertation that will combine IM features (chat messages + rosters) with collaboration (file transfer, simultaneous editing and collaborative drawing).
The clients will be a mixture of iPhone (and possibly Android) and desktop apps.
The list of technologies I've looked at is almost too long to mention, but I've narrowed it down to the MQ-like RedDwarf/Project Darkstar or XMPP with an OpenFire server.
The problem is, XMPP seems ideal for the IM functions but the overhead of XML seems to me like it might be an issue when communicating the touches on a screen involved in drawing over, say a 3G connection. Conversely, the binary messages of RedDwarf (or ZeroMQ/RabbitMQ etc) seem very fast but lack some of the higher level features of XMPP.
The question for me is, has anyone had experience using XMPP in this way (I'm aware Google Wave use(d) Google's variant of XMPP so perhaps it is), and is it efficient enough to send hundreds of small messages from a mobile device?
XMPP is fast, but parsing xml does take some more cpu power than a binary format. However it is much easier to user/debug than binary protocols.
Your server is not going to be limited unless there are thousands of devices communicating at the same time, so the bottleneck will probably be your mobile device parsing and creating xml stanzas.
XMPP can also be a drain on your mobile battery life if there are lots of friends connecting/disconnecting (resulting in presence updates to be processed). That might also be something to consider.
I'd suspect that the 3G would be a greater cause of latency than XMPP.
And use of compression greatly reduces the overhead of XML.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed 8 years ago.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Improve this question
I'm going to create a game.
At first it will be the browser game.
Later it will be APP (Android, iPhone game).
At the server side I use nginx, apache, php.
=================
I need to inform online players about different events.
For example: one user is attacked by another one. I should inform him about that immediately.
Classical AJAX can't wrong there. I've read some about comet, web sockets and some other technologies.
But I still can't understand, which solution is the best for me?
Please, help me with the decision.
WebSocket should be the preferred option. It is a broadly supported technology.
It is a persistent, full duplex connection, compatible with all major browsers http://caniuse.com/websockets
maybe you could try Server Sent Events.
with SSE, a constant connection is maintained, until the page is unloaded, if something goes wrong with the connection or if you close the connection manually.
everytime something happens, e.g. a player is being attacked, you send an event command to the client, which then takes action depending on the event data.
although it does not work in every browser yet, it is a technique you could try
http://www.html5rocks.com/en/tutorials/eventsource/basics/ gives some further explaination on SSE and on how to set it up
Go with WebSocket. Using this, you can handle both the data sent from client browsers to the server (e.g. "user A attacks user B") and data sent from the server over a single channel. This saves server resources - and having a single technology is better than two separate ones (AJAX + something for the back channel).
Additionally, there are libraries for WebSocket for Android and iOS, so you could also attach native clients there in the future.
Since you'll need to distribute events to multiple clients at once, using something like Publish & Subscribe on top of WebSocket would make sense.
I suggest taking a look at Crossbar.io - it's an open source application router which does Publish & Subscribe out of the box.
Full disclosure: I work for Tavendo, the originators of the Crossbar.io open source project.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
i wanna to know what the technology must i do when i want to create an application like:
real time application ?
multiplayer in game ?
sometimes i'm read this article keep alive.
what is that support in socket TCP ?, i'm already read server push but is many example work under HTTP, how about in TCP like create a socket TCPServer and TCPClient.
There isn't just one "go-to" technology for making real-time / multiplayer gaming applications. You have to understand a multitude of different programming realms like graphics manipulation, threading, networking(TCP,etc). I would say it would be good for you to pick up a book on game development and design at your local library, bookstore or on the web. You also want to decide where and how you want to run the game. If you are going for a desktop application you are probably going to want to use a language like Java or C++/C#. For web applications Java and Flash are historically the way to go, and there is even a growing case for games written primarily in javascript (presumably with a .NET/PHP back-end).
If you want to jump right in you might try a framework like Unity which I believe is based on Microsoft's .NET framework. This tool has a lot of things built into it which would help you get started.
I know that is not a lot of specific information but hopefully it points you in the right direction.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
My goal is to create a game in a browser (a game like wordfeud) and my question is what is the best way for the networking part? In Java, C# and so on you can use socket programming (server-client programming), but how is the best way to do it in a browser?
Yeah, node.js is excellent for game server, for the following advantages.
Network IO and scalability. Perfect match for game servers, which requires realtime, scalability, high density network IO.
The node.js thread model. Single thread is quite suitable for game server, it helps us to handle all the troubles about concurrency, lock and other annoying questions. Multi-process, single thread is ideal for game server.
The language advantages. Javascript is powerful, popular and performance good. Further more, if you choose HTML 5 for client, you can reuse a lot of code logic between server and client.
But the original socket.io is single process, if you want scalability and extensibility, some framework may needed. Pomelo is a good candidate for it, it's an open source game server framework in node.js.
Server side: Node.js + socket.io seems appropriate for those types of connections
Client side: javascript or actionscript from the client side.
Example
PopCap (which makes a bunch of popular facebook games like zuma blitz and bejeweled blitz) uses predominantly flash / actionscript / possibly flex for their games and it seems to do the trick. Javascript would be more accessible to those who wanna play via a phone or tablet though.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I am part of a team which has been given a task to deploy an IPTV solution for a company. The system has been architect-ed like this.
There is Video capture card , which receives satellite signals from a satellite receiver. This video capture card is part of a windows 7 machine. The signals need to be trans coded here and passed to a streaming server which will be received by end users.
The end users will be desktop users having a C#.NET application installed to view the channels.
I am confused at the choice of server software as I have multiple choices - Windows Media Server, VideoLan (VLC project), or Flash Media Server, it also supports MPEG-2 HD.
My main aim to be able to stream MPEG-2 channels with HD quality and encrypt the channels at the server end so that the streams can be protected. I know reversing is possible but it wont be easy as for every naive user with wireshark snooping my streams.
If any of you here has ever done such an implementation please do suggest me the best technologies I should go for.
Iam open to C#,C++ and other similar languages. Any help shall be deeply appreciated.
edit: End Users shall be part of Internet and not necessarily a lan, reason for this question is internet doesn't support multicast like Lan, so I need some suggestions.
Guys, We have finally settled to use XMBC , Boxee's code base for our solution.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 5 years ago.
Improve this question
I've heard reports that Apple will reject applications that use excessive amounts of bandwidth. The number that I've heard is a maximum of 1MB/minute of bandwidth usage. Although I've seen this number on various boards, I haven't been able to find an explicit statement from Apple's guidelines that speak to this.
I'm looking to stream video to an application and want to know what the maximum encoding rate of the videos should be.
Does anyone know what the exact number is? Is it documented somewhere?
There is no published limit, I believe Apple leaves themselves some room to make a judgement about individual apps.
Keep in mind that you'll probably need to limit the bandwidth you use over cell anyways, since Edge is rather slow. There is no limit on WiFi.
I do not know of any specification regarding this topic. But yes, Apple will reject Applications which use a lot of bandwidth. You can restrict your application to WiFi only, then bandwidth usage is not a problem to Apple anymore. They have contracts with the mobile network operators to restrict the bandwith within their networks.
1 mb/minute tested over five minutes seems to be the test.
Please see this other question for advice on this:
iPhone app rejected for "transferring excessive volumes of data"
This is also confirmed by Brian Stormont:
http://blog.stormyprods.com/2009/04/avoiding-iphone-app-rejection-from.html