,Connecting to Twitch IRC works in Editor not in browser (WebGL)
I have a c# script that connects to twitch chat using sockets and an very basic IRC implementation.
This works when I run the scene in the unity editor but does not when I build it for WebGL.
The Error I get is : system.net.sockets.socketexception (0x80004005): could not resolve host 'irc.chat.twitch.tv' at system.net.dns.error_11001 (system.string hostname) [0x00000]
Is this a webGL sandbox thing? I also tried using the TwichLib at https://github.com/TwitchLib/TwitchLib . And again that worked in the editor but no after building.
I am using Unity 2019.4.13f1.
In the below example I spawn a sphere at a random location when someone types spawn in twitch chat. I've tested this by joining the twitch chat and typing "spawn" and it works. But once again it doesn't work after being built.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.ComponentModel;
using System.Net.Sockets;
using System.IO;
using UnityEngine.UI;
public class TwitchChat : MonoBehaviour {
private TcpClient twitchClient;
private StreamReader reader;
private StreamWriter writer;
public string username, password, channelName; //Get the password from https://twitchapps.com/tmi
public replicateSphere replicateSphereScript;
public Text chatBox;
void Start () {
replicateSphereScript = GetComponent<replicateSphere>();
Connect();
}
void Update () {
if (!twitchClient.Connected)
{
Connect();
}
ReadChat();
}
private void Connect()
{
try{
twitchClient = new TcpClient("irc.chat.twitch.tv", 6667);
reader = new StreamReader(twitchClient.GetStream());
writer = new StreamWriter(twitchClient.GetStream()) {AutoFlush = true};
writer.WriteLine("PASS " + password + "\r\n");
writer.WriteLine("NICK " + username + "\r\n");
writer.WriteLine("USER " + username + " 8 * :" + username + "\r\n");
writer.WriteLine("JOIN #" + channelName + "\r\n");
writer.Flush();
chatBox.text = "Connected";
}
catch (Exception e){
chatBox.text = e.ToString();
}
}
private void ReadChat()
{
if(twitchClient.Available > 0)
{
var message = reader.ReadLine(); //Read in the current message
if (message.Contains("PRIVMSG"))
{
//Get the users name by splitting it from the string
var splitPoint = message.IndexOf("!", 1);
var chatName = message.Substring(0, splitPoint);
chatName = chatName.Substring(1);
//Get the users message by splitting it from the string
splitPoint = message.IndexOf(":", 1);
message = message.Substring(splitPoint + 1);
chatBox.text = String.Format("{0}: {1}", chatName, message);
//Run the instructions to control the game!
GameInputs(message);
}
}
}
private void GameInputs(string ChatInputs)
{
if(ChatInputs.ToLower().Contains("spawn")
{
replicateSphereScript.CreateNewSphere();
}
}
}
Your answer
Follow this Question
Related Questions
Webgl build problems 1 Answer
WebPlayer build fail 0 Answers
WebGL with SocketIO throws errors 1 Answer
Create a game client/server in webgl 2 Answers
Cannot Export to WebGL because of il2CPP stops working. 2 Answers