我试图让登录用户加入连接上的某个socket.io房间.根据我在网上发现的任何例子,我似乎已经从客户端发出一些动作,以便能够加入一些房间.就像是:
socket.on('connect', function() {
socket.emit('join', 'room1');
});
Run Code Online (Sandbox Code Playgroud)
Server.js:
io.sockets.on('connection', function(socket) {
socket.on('join', function(room) {
socket.join(room);
});
});
Run Code Online (Sandbox Code Playgroud)
根据大多数教程,它应该工作.
我认为要做的是:
socket.on('connect', function() {
socket.join('room1');
});
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,因为我从服务器发出的消息不会被客户端捕获.任何想法,我做错了什么?一般来说可能吗?
我正在尝试通过构建一组动态创建的聊天室来学习Socket.io,这些聊天室在用户进入和离开时会发出"已连接"和"已断开连接"的消息.看着后夫妇 的 问题,我已经把一些功能,但大多数链接的响应是从谁承认他们已经一起黑客攻击的人的答案和我注意到有一个更通用-关于正确的方式来讨论-和最近在Socket.io repo上做这个(特别是这里和这里)
由于我是这样的新手,我不知道下面的工作是否是一种可接受的做事方式,或者只是偶然发生功能,但会导致性能问题或导致听众太多.如果有一种理想的 - 官方的 - 加入和离开房间的方式感觉不那么笨重,我很乐意了解它.
客户
var roomId = ChatRoomData._id // comes from a factory
function init() {
// Make sure the Socket is connected
if (!Socket.socket) {
Socket.connect();
}
// Sends roomId to server
Socket.on('connect', function() {
Socket.emit('room', roomId);
});
// Remove the event listener when the controller instance is destroyed
$scope.$on('$destroy', function () {
Socket.removeListener('connect');
});
}
init();
Run Code Online (Sandbox Code Playgroud)
服务器
io.sockets.once('connection', function(socket){
socket.on('room', function(room){ // take room variable from …
Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习NodeJS和Socket.io ...直到现在我有这个演示代码,来自官方socket.io网站:
我能够获得连接的每个用户(套接字)的唯一客户端ID,我仍然想弄清楚,如何让我的代码在有人运行应用程序时只与1个随机用户连接.我只是想随便聊聊像http://www.omegle.com/
只有2个用户应该随机连接并相互聊天,直到他们重新运行应用程序,如果他们回来,他们应该与在线队列中的其他人联系.
有类似行为我需要做哪些改变?
到目前为止,这是我的代码:
专家的代码示例或指导对像我这样的菜鸟真的很有帮助.
更新:添加了客户端站点代码main.js
$(function() {
var FADE_TIME = 150; // ms
var TYPING_TIMER_LENGTH = 400; // ms
var COLORS = [
'#e21400', '#91580f', '#f8a700', '#f78b00',
'#58dc00', '#287b00', '#a8f07a', '#4ae8c4',
'#3b88eb', '#3824aa', '#a700ff', '#d300e7'
];
// Initialize variables
var $window = $(window);
var $usernameInput = $('.usernameInput'); // Input for username
var $messages = $('.messages'); // Messages area
var $inputMessage = $('.inputMessage'); // Input message input box
var $loginPage = $('.login.page'); // The login …
Run Code Online (Sandbox Code Playgroud) 我在这里关注第二个例子:https : //github.com/socketio/socket.io-client
并尝试连接到使用 websockets 的网站,在 node.js 中使用 socket.io-client.js。
我的代码如下:
var socket = require('socket.io-client')('ws://ws.website.com/socket.io/?EIO=3&transport=websocket');
socket.on('connect', function() {
console.log("Successfully connected!");
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有记录任何内容。
我也试过:
var socket = require('socket.io-client')('http://website.com/');
socket.on('connect', function() {
console.log("Successfully connected!");
});
Run Code Online (Sandbox Code Playgroud)
但没什么。
请告诉我我做错了什么。谢谢!
我正在尝试创建一个聊天系统,用户可以在其中向所有人发送消息(并且此消息显示在 ID 为“chat”的 div 中),并且我已经实现了此功能。现在我想实现一个私人聊天。用户可以单击右侧列(显示所有登录用户)上的另一个用户名,一旦他单击用户名,就会出现一个小窗口(类为“chatpopup”的 div),在此窗口中有一个提交按钮和一个要填充消息的输入文本,单击提交按钮后,应将消息发送给其他用户。
这就是我所拥有的,如果我单击用户(在屏幕右侧),则会显示小窗口(chatpopup),但是当我尝试在这个小窗口内提交表单时,应用程序崩溃。我还想收到一些关于建立私人聊天的提示,例如如何在应该接收消息的用户的客户端打开一个新窗口(带有消息接收)?
索引.html
<html>
<head>
<title>Chat with socket.io and node.js</title>
<style>
#contentWrap
{
width:100%;
display: none;
}
#chatWrap {float: left; width:80%;}
#chat
{
height:500px;
width:96%;
border: 1px #000 solid;
padding-left:2%;
padding-right:2%;
}
#users
{
margin-left:82%; width:15%;
height:500px;
border: 1px #000 solid;
text-align:right;
}
#send-message {margin-top:3%; width:100%;}
#message {width:80%;}
.err1r{ padding-top:1%;
color: red;
}
.whisper{
color: gray;
font-style: italic;
}
p.sideusername:nth-child(even) {background-color:#FAFAFA; padding-bottom:5%; padding-top:5%;}
p.sideusername:nth-child(odd) {background-color: #f5f5f0; padding-bottom:5%; padding-top:5%;}
.chatpopup {width:350px; height: 250px; background-color:blue;}
#interlocutore {background-color:red; …
Run Code Online (Sandbox Code Playgroud)