Articles of socket.io

来自服务器的SocketIO全局消息

我有node.js socket.io服务器。 我想每5秒钟向所有客户端发送消息。 这里我的过程到目前为止: var express = require('express'); var app = express(); var path = require('path'); var server = require('http').createServer(app); var io = require('../..')(server); var port = process.env.PORT || 3000; server.listen(port, function () { console.log('Server listening at port %d', port); }); app.use(express.static(path.join(__dirname, 'public'))); function PingPong(socket) { console.log('Send: Ping Pong, Number of Users: %d', numUsers); socket.emit('ping […]

openshift与socket.io,npm安装无法读取依赖关系

在试图在openshift上使用socket.io构buildnode.js服务器时,会发生以下错误。 npm ERR! install Couldn't read dependencies npm ERR! install Couldn't read dependencies npm ERR! Linux 3.10.0-753.el7xtsync.x86_64 npm ERR! argv "/opt/rh/rh-nodejs4/root/usr/bin/node" "/opt/rh/rh-nodejs4 /root/usr/bin/npm" "install" npm ERR! node v4.6.2 npm ERR! npm v2.15.1 npm ERR! file /opt/app-root/src/package.json npm ERR! code EJSONPARSE npm ERR! Failed to parse json npm ERR! Cannot find module './lib/parse' npm ERR! File: […]

Socket.io:服务器需要2个连接才能做出响应

我尝试与套接字io进行私聊(或群聊)。 为了尝试这个概念,我创build了一个包含用户名和房间的数组“person”。 检查用户是否存在并不存在,并且是将来的扩展。 我遇到的问题是,如果user1连接,他不能发送消息,直到user2连接。 用户2只能在用户3连接时发送消息。 如果我重新启动服务器,它们都可以发送。 任何线索我可能做错了什么? 应该注意的是,广播的作品,所以我怀疑,服务器configuration将是问题 服务器: let numUsers = 0; let person = {user1: "1", user2: "1",user3: "2", user4: "2", user5: "1",user6: "3"}; io.on('connection', function (socket) { console.log("conn"); let addedUser = false; // when the client emits 'add user', this listens and executes socket.on('add user', function (username) { //if (person[username]) { // […]

如何在bluemix上configurationsocket.io粘性会话

我需要在具有多个cloudfoundry实例的IBM Bluemix上部署一个socket.io应用程序,以确保负载均衡。 我跟着socket.io文档和这个链接来使用粘性会话,并确保每个套接字转到正确的实例。 不幸的是,我的客户端连接事件刚刚断开连接,并发生错误'400xhr poll'错误。 这是我的服务器代码: const cookieParser = require('cookie-parser') const session = require('express-session') const redis = require('redis') const app = require('express')() const http = require('http').Server(app) const io = require('socket.io')(http) const RedisStore = require('connect-redis')(session) const redisUrl = 'myredis' var session = session({ store: new RedisStore({client: client}), secret: 'mysecret', name: 'jsessionid', resave: true, saveUninitialized: true }) […]

使用node.js和socket.io以及Zend Framework应用程序

我已经构build了一个Zend Framework应用程序。 我想在这个应用程序中实现node.js和socket.io,但我不知道从哪里开始。 我只使用node和socket.io来创build一个简单的聊天应用程序 。 如果任何人都可以给我一些指示,从哪里开始或采取什么步骤来更好地理解这个实现应该如何工作。 谢谢! 我已经看到了这个问题,但它确实过时了。

TypeError:this.sendHandshake不是一个函数

我试图为nodejs&socket.io游戏创build一个简单的类(包装)。 module.exports = class client { constructor(socket) { this.socket = socket; this.createEvents(); } createEvents() { console.log('creating events'); this.socket.on('handshake', this.onHandshake); this.socket.on('disconnect', this.onDisconnect); } sendHandshake() { // <———— sendHandshake is there? console.log('sending handshake'); this.socket.emit('handshake'); } onHandshake() { console.log('handshake received'); this.sendHandshake(); // <—– TypeError: this.sendHandshake is not a function } onDisconnect() { console.log('client disconnected'); } } 它应该给我这个输出 creating […]

从nodejs的HTML文件共享

我正在使用nodejs制作Chatroom。 我正在使用express,socket.io和http来达到这个目的。 我正在寻找通过HTTP服务器进行文件共享的选项。 首选的文件格式是图像文件(.jpg或.png)和文本文件。 但我无法做到这一点。 我尝试使用HTML的input标签,但没有上传任何文件到服务器。 这是我的服务器端代码(server.js) var express = require("express") , app = express() , http = require("http").createServer(app) , bodyParser = require("body-parser") , io = require("socket.io").listen(app.listen(3000)) , _ = require("underscore"); const file = require('express-fileupload'); app.use(file()); var participants = []; app.set("ipaddr", "127.0.0.1"); app.set("port", 8080); app.set("views", __dirname + "/views"); app.set("view engine", "jade"); app.use(express.static("public", __dirname + "/public")); […]

获取喜欢的post的ID – Node.js Express Socket.io

我试图build立一个职位系统,人们可以评论和喜欢。 这就是我现在所做的 <!– posts.ejs –> <% posts.forEach(function(task) { %> <%- include post.ejs %> <% }) %> 当有人喜欢,我使用这样的sockets <!– post.ejs –> <script> var socket = io('localhost:48001'); $('#like').on('click', function(event){ var task = <% task._id %> console.log(task); var liker = { pId: task , usr: user._id, liker: 1 }; socket.emit('like', liker, function(response){ if(response==true){ //console.log("blue"); } }); }); //server […]

轮stream使用socket.io&node.js

我正在尝试做一个基于回合的游戏,但我无法弄清楚我做错了什么。 我似乎无法禁用特定用户的button,即当不是那些人转动时,他们不应该被允许做任何事情,在这种情况下禁用绘制和站立button。 我如何使这个回合基于其他客户端被禁用? 用我现在的代码,这些button从来不会被禁用,对于任何客户端来说,它们总是可以玩的而不是轮到他们。 服务器端 var express = require('express') var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var users = []; var index = 0; io.on('connection', function(socket) { socket.on('add-user', function(data) { users = [{ 'name': data, 'socket': socket.id, 'total': 0, }]; }); socket.on('game-start', function () { if(users[index].socket === socket.id) { console.log(users[index].socket); […]

在实时Web应用程序中处理服务器响应的上下文

发现难以描述这个问题 – 所以请编辑,如果你知道更多的相关条款。 我正在构build一个基本上使用Redis(PubSub)+ Node.js + Socket.IO作为分发服务器的Web应用程序。 我有双向沟通,没有任何问题 – 但我需要能够从客户端(asynchronous)向服务器发出请求,并处理响应,同时处理其他可能会出现的无关响应。 这是我迄今为止,但我不是特别满意这种方法: 服务器 // Lots of other code redis.psubscribe('*'); redis.on("pmessage", function(pattern, channel, message) { // broadcast }); io.on('connection', function(client) { client.on('message', function(message) { switch(message.method) { // call relevant function } }); }); function object_exists(object_id) { // do stuff to check object exists client.send({method: 'object_exists', value: object_exists}); […]