- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 WebSockets 连接一个小游戏。我正在使用 socket.io、socket.io-p2p 和 socket.io-p2p-server。我希望用户能够自动与任何没有合作伙伴的已连接玩家配对。我希望用户只能成对连接。
到目前为止,只要按照文档操作,我只能让客户端使用 socket.io 进行连接。当我尝试使用 socket.io-p2p 和 socket.io-p2p-server 时,我有时可以让用户连接,有时我会在屏幕上收到错误消息,例如
“套接字
上缺少错误处理程序。TypeError: 无法读取未定义的属性‘emit’”
有人在 repo 上针对这个问题打开了一个 issue,但没有得到回应,也从未得到回应
https://github.com/tomcartwrightuk/socket.io-p2p-server/issues/5
我不知道 socket.io-p2p-server 是坏了还是我只是遗漏了什么。自 3 月以来,更多的 socket.io-p2p-server 没有被触及太多。
所以我的主要问题是:
socket.io-p2p-server 还活着吗?
是否有更好的实现可以用于这些抽象?
我自己编写逻辑而不是使用 socket.io-p2p-server 值得吗?
客户端代码
import P2P from 'socket.io-p2p'
import io from 'socket.io-client'
const socket = io()
const p2pSocket = new P2P(socket, null, function () {
console.log("my id is: " + p2pSocket.peerId)
})
p2pSocket.on('peer-msg', function (data) {
console.log(data)
})
服务器端代码
var http = require('http')
var httpServer = http.createServer(requestHandler)
var fs = require('fs')
var io = require('socket.io')(httpServer)
var p2pServerModule = require('socket.io-p2p-server')
var p2p = p2pServerModule.Server
var connectedUsers = p2pServerModule.clients
io.use(p2p)
httpServer.listen(8000, 'localhost');
function serveUpFile(req, res, path) {
fs.readFile(path.toString(), function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200)
res.end(data)
})
}
function requestHandler (req, res) {
if (req.url === '/static/bundle.js') {
serveUpFile(req, res, './static/bundle.js')
} else {
serveUpFile(req, res, './index.html')
}
}
io.on('connection', function (client) {
console.log('client connected to the server')
client.on('peer-msg', function (data) {
console.log('Message from peer %s', data)
})
client.on('disconnect', function () {
console.log('client disconnected from the server')
})
})
最佳答案
socket.io-p2p-server 不能像预期的那样与 socket.io 1.x 一起工作。
更改 socket.io-p2p-server/index.js:这部分:
if (typeof room === 'object') {
var connectedClients = socket.adapter.rooms[room.name]
} else {
var connectedClients = clients
}
对此:
if (typeof room === 'object' && ('name' in room) && (room.name in socket.adapter.rooms) ) {
var connectedClients = {}
for (var id in socket.adapter.rooms[room.name].sockets) {
connectedClients[id] = clients[id];
}
} else {
var connectedClients = clients;
}
这个解决方案适合我。
关于node.js - 使用 socket.io、socket.io-p2p、socket.io-p2p-server 自动配对对等连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39907674/
我希望我的 C/C++ 客户端通过 SSL 验证服务器。我首先使用 从服务器下载了证书文件 openssl s_client -showcerts -connect www.openssl.org:4
我正在尝试学习使用 RSelenium。我坚持只是尝试使用 rsDriver 启动服务器。我只是想运行下面的代码并得到以下错误: rD = 8 x64 (build 9200) Matrix prod
我已经建立了一个 8 组织的单 channel 结构网络。我能够进行整个网络设置。但是设置成功后。一些 docker 实例停止监听它们各自的端口。当我做 docker ps -a它显示了一些对等节点图
如何在多个 Azure Kubernetes 集群上的 Pod 之间配置路由? 与 Google Cloud 上的 ip-alias/vpc-native 类似的内容 最佳答案 在 AKS 中,我认为
我正在尝试实现点对点连接应用程序。所以我想将 2 个以上的设备相互连接。如何为每对设备创建单独的 session 使用新的 GameKit 框架是否可以连接到 1 个以上的设备? 最佳答案 您可以使用
我一直致力于创建一个 VPC 对等连接,该连接可以使用 cloudformation 从 eu-west-1 与 us-east-1 进行对等。这是目前的云信息: AWSTemplateFormatV
我正在尝试在两个不同区域之间进行 vpc 对等互连。在这里我已经创建了资源,现在我只想将它们的 id 作为参数传递。在同一区域,我可以在两个 VPC 之间进行对等。但我在两个不同的区域收到错误,因为r
我是一名优秀的程序员,十分优秀!