Articles of socket.io

基于在线多人游戏浏览器的游戏服务器技术?

我想要构build一个简单的跨浏览器的多人游戏(如国际象棋或纸牌游戏),它将使用套接字与服务器通信。 我有一些Ruby语言的中间知识,但是我不太确信它是多客户端服务器的一个很好的解决scheme,所以认为Node.js或者Socket.io可能是一个更好的解决scheme。 我知道Java或者C ++对于这个工作来说可能很棒,但是我对它们都不太满意,所以这就是我对服务器端JavaScript的兴趣所在。 我的问题是,你认为什么是这样一个项目的最佳解决scheme? 什么可能是最好的服务器端技术,我将build立一个完整的游戏和通信逻辑? 也许他们的一些组合? 任何有关速度,服务器负载,托pipe解决scheme和每种技术的开发速度的意见将不胜感激。

基本的socket.ioauthentication

我有以下代码允许用户join一个房间开始聊天。 server.on('connect', function(data) { nickname = prompt('What is your name?'); server.emit('join', {name : nickname, room : $('#roomid').val()}); $('#events').append('<li>Welcome, ' + nickname + '!</li>'); }); 然而,我担心的一个问题是:是什么阻止用户发出与数百个用户名的“join”,垃圾邮件的聊天室? 我是全新的实时编程,所以我想知道什么样的技术可以用来防止这种行为。

在node.js / socket.io中,如何判断某个对象是否是套接字的一个实例?

在我的应用程序socket传递,因为this使用bind和call socket.on( 'handle', someFunc.bind(socket) ); function someFunc() { var socket = this; … anotherFunc.call( socket, 'abc', … ); } 我希望确保this确实是一个socket – 遗忘 – 使用func(…)而不是func.call(socket,…) 。 function someFunc() { var socket = this; assert.ok( /* ensure this is instanceof a socket */ ); … } 我如何做出断言? 有我可以使用的io = require('socket.io')内的一些socket吗?

找不到socket.io.js

我正在做一个使用nodejs,mongodb,socket.io,express和mongoose的web应用程序。 当浏览到我的本地主机时,我可以启动我的服务器并在浏览器中正确地获取所需的html文件。 我的问题是让我的socket.io工作。 在我的服务器端一切工作正常:我得到“信息 – socket.io启动”在我的terminal。 但是,当浏览我的浏览器,我在我的浏览器控制台 Failed to load resource: the server responded with a status of 404 (Not Found) Uncaught ReferenceError: io is not defined 这是我如何连接到socket.io.js <script src="/socket.io/socket.io.js"></script> 而我的地图结构如下所示: map -app.js -public –index.html -node_modules –socket.io –mongodb –express –jade –mongoose 有谁知道我犯了什么错误? (它实际上是和这里一样的问题: 没有findNode.js socket.io.js,或者没有定义io ) 提前致谢! 编辑:我的代码在服务器端是这样的: var app= require('express').createServer(); var io = require('socket.io').listen(app); […]

我如何声明一个variables,任何客户端可以使用socket.io访问

这是一个游戏应用程序,我用我的大部分肮脏工作的MySQL,但我希望在这里轻量级的解决scheme。 我注意到我可以声明socket.clientid和每次客户端发射到我的服务器我可以使用socket.clientid 有没有办法像(从来没有尝试过这样)声明一个variables“io.sockets.doors = [1,0,1]”代表一个closures的门#1打开的门#2closures的门#3,并允许每个人访问一个从我的服务器的内存单个数组? 如果是的话有文件? 我的服务器在node.js中运行socket.io客户端通过浏览器中的websockets进行连接

尽量减less客户端/服务器之间在JavaScript中发送的数据

我正在尝试在javascipt中使用任何库来编写多人游戏演示。 一切都很顺利,但为了获得更好的性能,我将不得不尽量减less通过我的websockets发送的数据,否则我将无法做得太多。 我一直在想着做这件事的最好方法。 我正在使用Node.JS + Express + Socket.IO。 首先,我将每个客户端的所有密钥的键盘状态发送到服务器,然后迅速将其缩小为仅用于我使用的密钥的真/假值。 但现在我想我应该真的做一些事情,例如分配给每个可能的input状态 (可能的input组合)的十进制文字值(0,1,3,4),并简单地将该值发送到服务器。 我在静态types语言(如C ++,Java等)方面有更多的经验,所以我知道我将如何在这些语言中做到这一点。 但基本上我想知道的是,如果我有less量的可能的input状态。 什么是最好的方式来发送这个数据使用JavaScript的两端。 它将进入一个JSON对象。 反正有我发送一个字节吗?

服务器时间和客户端时间 – 差异?

我已经写了一个代码,告诉我一个数据包从server to client花费的时间,以及从client to server to client总时间。 这是我的代码。 客户端: <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Ping</title> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> $(document).ready(function(e) { var socket = io.connect('http://pingme.jit.su:80/', {secure: false}); $('#button').click(function(e) { e.preventDefault(); $(this).attr('disabled','disabled'); var time = (new Date()).getTime(); socket.emit('ping', time); }); socket.on('pong', function(data) { var time2 = (new Date()).getTime(); var lat = time2 […]

无法接收SOCKET.IO客户端中的事件

我是socket.io新手,我正在尝试在他们的网站上提到的例子。 我很好,但是当我尝试在服务器端使用io.emit并尝试在客户端接收时会发生问题。 这是我的服务器代码 var io=require("socket.io").listen(8888); io.set('log level',1); io.on('connection',function(socket){ socket.emit('hi'); console.log("Connected"); }); 和我的客户的代码 <script src="http://localhost:8888/socket.io/socket.io.js"></script> <script> var socket=io.connect("http://localhost:8888"); socket.set('log_level',1); socket.on('hi',function(){ console.log('received'); }); </script> 问题是我没有看到在控制台中收到的消息! 答案可能是微不足道的,但我试着尝试,但每次都失败。 请指导…. 我在Ubuntu的Firefox。 节点版本:0.8.7

使用socket.io将应用程序连接到节点服务器

我试图连接一个客户端应用程序(用c ++编写,尽pipe不应该有任何影响)到使用express和socket.io编写的node.js服务器。 服务器几乎归结为: var express = require('express'); var http = require('http') var app = express(); var server = http.createServer(app) var io = require('socket.io').listen(server); app.use(express.cookieParser()); app.use(express.session({ … })); app.use(app.router); // response handling ——- app.get('/', function(req, res){ console.log('request get /'); }); io.sockets.on('connection', function(socket) { console.log('sockets.io connection!'); }); // ——- port = 3000 app.listen(port); console.log('Listening on port: ' […]

从HTTP服务器到TCP服务器的数据传输

我正在一个项目中,我有一个.Net客户端连接到一个节点TCP服务器。 这个TCP服务器又需要从另一个节点HTTP服务器接收数据。 所以,这个HTTP服务器正在接收一些数据,需要将它转发给TCP服务器。 然后,TCP服务器需要将其广播给所有.Net客户端。 我坚持数据传输部分(尝试使用套接字,BT不太自信)。 比方说,HTTP服务器被定义为: var httpServer = http.createServer(function(req,res){ res.writeHead(200, { 'Content-type': 'text/html' }); var parsed = url.parse(req.url, true); output = parsed.query.id; })听(HTTP_PORT); 其中variables“输出”是从第三个服务器发送的URL构思的。 所以,我需要将这个variables的“输出”传递给运行在其他端口上的TCP服务器。 任何帮助,将不胜感激。 问候,Abinash。