Ich versuche mit socket.io + eckig eine Chat-Room-Webanwendung zu erstellen.socket.io - kann keine Nachrichten an einen bestimmten Raum in einem Socket senden
Ich habe ein spezielles Textfeld, in dem der Benutzer den Namen des Raums eingeben, den er verbinden möchte. dann versuche ich, diesen Benutzer mit diesem bestimmten Raum zu verbinden und alle seine Nachrichten in diesen Raum zu senden.
Wenn ich jedoch versuche, einen String in den Chat zu senden, wird die Anfrage auf der Serverseite bearbeitet (die Konsolenprotokollausgabe wird vom Server gedruckt), aber nicht auf dem Controller socket.on ('chat_message' , Funktion (Daten) ...) Methode druckt es nicht Konsolenprotokoll.
was mache ich falsch?
der Code ist unten. Es gibt mehr Code, den ich nicht für erforderlich halte (angular related stuff).
Vielen Dank im Voraus
Ansicht
<form ng-submit="submit()">
<input autocomplete="off" ng-model="insertedText" type="text" />
<button type="button" ng-click="submit()">
Send
</button>
</form>
Controller
mymodule.controller("cntrlChat", ['$scope', 'myService',
function($scope, myService){
var socket = io();
$scope.messages = [];
$scope.room= myService.get();
socket.emit('room', $scope.room);
$scope.submit=function(){
socket.emit('chat_message',{ room: $scope.room, msg: $scope.user+": "+$scope.insertedText });
$scope.insertedText='';
return false;
}
socket.on('chat_message', function(data){
console.log('room-->'+data.room+' msg---->'+data.msg);
$scope.$apply(function() {
$scope.messages.push(data.msg);
});
});
}]);
Server
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use(express.static(__dirname + '/'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
io.emit('chat_message', "welcome");
socket.on('room', function(room) {
socket.join(room);
});
socket.on('chat_message', function(data){
console.log("room---->"+data.room, "msg---->"+data.msg);
io.sockets.in(data.room).emit('chat message',data.msg);
});
socket.on('disconnect', function(){
io.emit('chat message', "Bye");
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
Sie werden viel mehr Details benötigen, als „es nicht funktioniert“, wenn Sie etwas Hilfe wollen – tommybananas
Beschreibung hinzugefügt – Matoy